1228: 趣味程序设计_出售金鱼

    xiaoxiao2021-03-25  100

    1228: 趣味程序设计_出售金鱼

    题目描述

    令狐冲将养的一缸金鱼分5次出售:第1次卖出全部的一半加1/2条;第2次卖出余下的三分之一加1/3条;第3次卖出余下的四分之一加1/4条;第4次卖出余下的五分之一加1/5条;最后卖出余下的11条。问原来鱼缸中共有多少条鱼?答案是59条。

    为了防止大家混AC,题目稍微改一下。

    令狐冲将养的一缸金鱼分m次出售(m的取值为2,或3,或4,或5):第1次卖出全部的一半加1/2条;第2次卖出余下的三分之一加1/3条;第3次卖出余下的四分之一加1/4条;第4次卖出余下的五分之一加1/5条;......;第m-1次卖出余下的m分之一加1/m条,最后卖出余下的11条。问原来鱼缸中共有多少条鱼?

    若输入的m是5,则答案仍是59条。

    输入

    每行输入一个m值,m的取值为2,或3,或4,或5。

    输出

    对应输出原来鱼缸中共有多少条鱼?,输出一个数字即可。

    样例输入

    5 4 3 2 4

    样例输出

    59 47 35 23 47

    提示

    从X=23开始试探,步长取2,前4次中,第i次出售后留下:X=X-(X+1)/(i+1),第4次出售后余下11条。

    #include<cstdio> #include<iostream> using namespace std; int main(){ int m; while(cin>>m){ int ans=11; for(int i=m-1;i>=1;i--){ ans=(ans*(i+1)+1)/i; /* 在此证明一下为什么 (ans*(i+1)+1) 一定能被 i 整除, (ans*(i+1)+1)%i==0 -> ans*(i+1)+1+k*i=0 -> k*i-ans*(i+1)=1; 即证i和i+1互质, 而(i+1)/i=1+1/i;可得当i>1时,i和i+1互质,原等式得证。 */ } cout<<ans<<endl; } return 0; }

     

     

     

     

     

    转载请注明原文地址: https://ju.6miu.com/read-36106.html

    最新回复(0)