桃子

12.29 [hduoj]2013 蟠桃记

痴心易碎 提交于 2019-12-30 03:06:06
Problem Description 喜欢西游记的同学肯定都知道悟空偷吃蟠桃的故事,你们一定都觉得这猴子太闹腾了,其实你们是有所不知:悟空是在研究一个数学问题! 什么问题?他研究的问题是蟠桃一共有多少个! 不过,到最后,他还是没能解决这个难题,呵呵^-^ 当时的情况是这样的: 第一天悟空吃掉桃子总数一半多一个,第二天又将剩下的桃子吃掉一半多一个,以后每天吃掉前一天剩下的一半多一个,到第n天准备吃的时候只剩下一个桃子。聪明的你,请帮悟空算一下,他第一天开始吃的时候桃子一共有多少个呢? Input 输入数据有多组,每组占一行,包含一个正整数n(1<n<30),表示只剩下一个桃子的时候是在第n天发生的。 Output 对于每组输入数据,输出第一天开始吃的时候桃子的总数,每个测试实例占一行。 Sample Input 2 4 Sample Output 4 22 #include<stdio.h> void main() { int n; while(scanf("%d",&n)!=EOF) { int sum = 1; for(int i=0;i<n-1;i++) sum=(sum+1)*2; printf("%d\n",sum); } } 感觉不需要解析。就是每过一天乘2加1。 来源: CSDN 作者: 棉毛裤穿吗 链接: https://blog.csdn.net/qq

BZOJ2563阿狸和桃子的游戏

荒凉一梦 提交于 2019-12-21 20:43:33
BZOJ2563阿狸和桃子的游戏 2563: 阿狸和桃子的游戏 Time Limit: 3 Sec Memory Limit: 128 MB Submit: 952 Solved: 682 [ Submit ][ Status ][ Discuss ] Description   阿狸和桃子正在玩一个游戏,游戏是在一个带权图G=(V, E)上进行的,设节点权值为w(v),边权为c(e)。游戏规则是这样的:   1. 阿狸和桃子轮流将图中的顶点染色,阿狸会将顶点染成红色,桃子会将顶点染成粉色。已经被染过色的点不能再染了,而且每一轮都必须给一个且仅一个顶点染色。   2. 为了保证公平性,节点的个数N为偶数。   3. 经过N/2轮游戏之后,两人都得到了一个顶点集合。对于顶点集合S,得分计算方式为   。   由于阿狸石头剪子布输给了桃子,所以桃子先染色。两人都想要使自己的分数比对方多,且多得越多越好。如果两人都是采用最优策略的,求最终桃子的分数减去阿狸的分数。   Input  输入第一行包含两个正整数N和M,分别表示图G的节点数和边数,保证N一定是偶数。   接下来N+M行。   前N行,每行一个整数w,其中第k行为节点k的权值。   后M行,每行三个用空格隔开的整数a b c,表示一条连接节点a和节点b的边,权值为c。   Output  输出仅包含一个整数

猴子分桃子问题

牧云@^-^@ 提交于 2019-12-07 19:21:47
猴子分桃子 做到猴子分桃子这题,感觉很有趣,也看了其他人的一些博客,最后总结了一下,做个笔记,方便以后查看,也供大家参考,如有错误,请指出,大家共同学习进步。 题目: 海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子均分为5份,多了一个,然后这只猴子把多的一个桃子扔到了海中,拿走了一份。第二只猴子把剩下的桃子均分成五份,发现也多了一个,然后也将多的一个扔到了海里,拿走了一份。第三只、第四只、第五只猴子都是这样做的,问海滩上原来至少有多少个桃子? 思路: 我们可以假设最后一只猴子拿到的那份桃子的数量为n,则: 第五只猴子分到的桃子数:n 第四只猴子分到的桃子数:(5*n + 1)/4 第三只猴子分到的桃子数:(((5*n +1)/4)*5+1)/4 第二只猴子分到的桃子数:(((((5*n+1)/4)*5+1)/4)*5+1)/4 第一只猴子分到的桃子数:((((((5*n+1)/4)*5+1)/4) 5+1)/4 5+1)/4 开始时沙滩上桃子的总数:(((((((5*n+1)/4)*5+1)/4)*5+1)/4)*5+1)/4)*5+1 我们可以先假定第五只猴子分到的桃子数为1,然后依次往上推第四只猴子分到的桃子数,然后再由第四只猴子分到的桃子数逆推第三只猴子分到的桃子数,依次逆推第二只、第一只,最终得到第一只猴子分到的桃子数,最后再由第一只猴子分到的桃子数

问题 1020: [编程入门]猴子吃桃的问题

匿名 (未验证) 提交于 2019-12-02 23:52:01
问题 1020: [编程入门]猴子吃桃的问题 时间限制: 1Sec 内存限制: 128MB 提交: 5403 解决: 3928 题目描述 猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。 第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。 到第N天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。 输入 N 输出 桃子总数 样例输入 10 样例输出 1534分析:本题可以采用逆推的方式求解由于是第n天发现只剩下一个,所以第n天并没有吃,所以在1-n-1天的时间里果实都要在怎加一个的基础上乘以二倍。 import java.util.Scanner; import java.math.*; public class Main { public static void main(String[] args) {   Scanner in = new Scanner(System.in);   int n = in.nextInt();   int s=1;   for(int i=1;i<=n-1;i++){     s=(s+1)*2; }   System.out.println(s); } }

PTA(java)猴子吃桃问题

匿名 (未验证) 提交于 2019-12-02 21:53:52
一只猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半加一个。到第 N 天早上想再吃时,见只剩下一个桃子了。问:第一天共摘了多少个桃子? 输入格式: 输入在一行中给出正整数 N ( 1 < N ≤ 1 0 )。 输出格式: 在一行中输出第一天共摘了多少个桃子。 输入样例: 3 输出样例: 10 代码: import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int total=1; if(n>1&&n<=10) { for(int i=1;i<n;i++) { total=(total+1)*2; } System.out.println(total); } } } 文章来源: PTA(java)猴子吃桃问题

bzoj 2563: 阿狸和桃子的游戏 贪心

一世执手 提交于 2019-12-02 19:32:17
这个真的好巧妙啊~ 如果只考虑点权的话显然直接按照权值大小排序即可. 但是加入了边权,就有了一个决策的问题. 于是,我们将边权分一半,分给两个端点. 如果一个人拿了两个端点,则边权都会加上. 否则,边权会抵消. 直接按照点权+一半边权排序即可. code: #include <bits/stdc++.h> #define N 100004 #define LL long long using namespace std; void setIO(string s) { string in=s+".in"; freopen(in.c_str(),"r",stdin); } LL a[N]; int main() { // setIO("input"); int n,m,i,j; scanf("%d%d",&n,&m); for(i=1;i<=n;++i) scanf("%lld",&a[i]),a[i]<<=1; for(i=1;i<=m;++i) { int x,y; LL z; scanf("%d%d%lld",&x,&y,&z); a[x]+=z,a[y]+=z; } sort(a+1,a+1+n); LL ans=0ll; for(i=1;i<n;i+=2) { ans+=a[i+1]-a[i]; } printf("%lld\n",ans/2); return 0; }   

指定函数的参数类型

元气小坏坏 提交于 2019-12-02 18:06:18
题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只    猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了    一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,    问海滩上原来最少有多少个桃子? 方法1: for i in range(10000): if (i*5+4)%4 == 0 : a=(i*5+4)/4 if (a*5+4)%4 == 0 : b=(a*5+4)/4 if (b*5+4)%4 == 0 : c=(b*5+4)/4 if (c*5+4)%4 == 0 : d=(c*5+4)/4 if (d*5+4)%4 == 0 : e=(d*5+4)/4 print i,a,b,c,d,e break 方法2: def r(j,int): if j%4 == 0 : return j*5/4+1 #(jj-1)*4/5=j,jj是j的上一个数 for i in range(10000): if r(i,int) <>None and r(r(i,int),int) <>None and r(r(r(i,int),int),int) <>None \ and r(r(r(r(i,int),int),int),int) <>None and r(r(r(r(r(i,int

5936 桃子的矩阵快速幂

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-02 17:00:31
桃子的矩阵快速幂 时间限制(普通/Java):1000MS/3000MS 内存限制:65536KByte 总提交: 6 测试通过:3 描述 桃子得到了一个递推式,f(n)=2*f(n-2)+f(n-1)+n^4,f(1)=a,f(2)=b,现在给你n,a,b,要你计算f(n)的值为多少。 输入 第一行一个整数T(T=100),表示有T组数据。 对于每组数据,第一行三个整数n(1≤n≤2^31),a(1≤a≤2^31),b(1≤b≤2^31)。 输出 对于每组数据输出一个数即f(n)的值,由于这个数会很大,你需要输出f(n)%2147493647后的值。 样例输入 2 3 1 2 4 1 10 样例输出 85 369 提示 第一个样例:第三个数字85=2*1+2+3^4。 第二个样例:第三个数字93=2*1+10+3^4,第四个数字369=2*10+93+4^4。 解题思路: f[n]=2*f[n-2]+f[n-1]+n^4; f[3]=2*f[1]+f[2]+3^4; 3^4如何用2的表达式表示出来 f[n+1]=2*f[n-1]+f[n]+(n+1)^4; f[4]=2*f[2]+f[3]+4*4; 4^4如何用4d的表达式表示出来 (n+1)^4=n^4+4*n^3+6*n^2+4*n+1; //后一项由前一项表示出来 所以 初始矩阵 b a 16 8 4 2 1

菩提祖师为什么要让孙悟空先做几年苦力,才肯传他长生之术

大城市里の小女人 提交于 2019-12-02 01:34:57
孙悟空在方寸山一共呆了十年的时间,这十年对于他而言,是一个生命的转折点,一场惊天动地的改变就藏在其中,菩提老祖是引导人,孙悟空是逆流而上的人,一个神秘莫测的师父,一个天资绝世的徒弟,未来的世界,早已注定! 然而很少有人知道的是,方寸山这十年的时间里,孙悟空真正跟在菩提老祖身边修行的时间,其实只有后面那短短的3年,前面的7年时间,他并没有修行,除了读书习字砍柴挑水之外,还做了一件事情! 这一点孙悟空一直都没有放在心上,但当他在五行山下反思自己的猴生时,才注意到这里非常不对劲的地方,这个地方便是他做的那件事情:每次都把后山桃树的桃子,吃得一干二净,不记得过了多少年了,只记得桃子丰盛了7次。 菩提老祖由此推算,孙悟空已经在方寸山上呆了7年的时间了,于是二话不说,就暗示孙悟空深更半夜到他的房间来。后面的故事想必不用我说大家一定都非常清楚了,孙悟空在修炼3年之后,就被菩提老祖给赶走了,然后叱咤风云大闹天宫,开启西天取经之路。 这里就有一个问题了,既然孙悟空拜了菩提老祖为师,那菩提老祖怎么不当场就把孙悟空教导出来呢,这样的话说不定还能多传授几年的功法,再回花果山去等待黑白无常的出现,时间刚刚好。 其实菩提老祖故意这样做,当然是有原因的,这里的关键点就在于他口中的“烂桃山”!烂桃山真的就这么不堪,被如此嫌弃吗,当然不是这样的,方寸山上怎么可能会存在简单的东西,更别说是方寸山的禁地后山了。

猴子吃桃

随声附和 提交于 2019-11-30 04:24:30
猴子第一天采摘了一些桃子,第二天吃了第一天的一半多一个,第三天吃了第二天的一半多一个…直到第十天就剩下一个。问:猴子第一天摘了多少桃子? 递推关系: f(n)=f(n-1)/2-1 f(n-1)=(f(n)+1)*2 边界条件:f(10)=1 #include <iostream> using namespace std; int main(){ int f[11]; f[10]=1; for(int i=9;i>=1;i--) f[i]=2*(f[i+1]+1); cout<<f[1]<<endl; return 0; } 来源: https://blog.csdn.net/CSDNyyw/article/details/101075107