zcmu-1643 报数游戏
生活随笔
收集整理的這篇文章主要介紹了
zcmu-1643 报数游戏
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
n個人站成一行玩一個報數(shù)游戲。所有人從左到右編號為1到n。游戲開始時,最左邊的人報1,他右邊的人報2,編號為3的人報3,等等。當編號為n的人(即最右邊的人)報完n之后,輪到他左邊的人(即編號為n-1的人)報n+1,然后編號為n-2的人報n+2,以此類推。當最左邊的人再次報數(shù)之后,報數(shù)方向又變成從左到右,依次類推。? 為了防止游戲太無聊,報數(shù)時有一個特例:如果應該報的數(shù)包含數(shù)字7或者是7的倍數(shù),他應當用拍手代替報數(shù)。下表是n=4的報數(shù)情況(X表示拍手)。當編號為3的人第4次拍手的時候,他實際上數(shù)到了35。? 給定n,m和k,你的任務是計算當編號為m的人第k次拍手時,他實際上數(shù)到了幾。?
Hint
思路:先判斷數(shù)符合不符合題目,在進行每一次的循環(huán)
代碼:
#include<iostream> #include<cstdio> using namespace std; int pp(int m) {int t=0;if(m%7==0)t=1;elsewhile(m>6){int x=m%10;if(x==7){t=1;break;}else m=m/10;}return t; }int main() {int n,m,k;while(~scanf("%d%d%d",&n,&m,&k)){if(n==0&&m==0&&k==0)break;int a=pp(m);int x=m;if(m==1||m==n){while(a!=k){x=x+2*n-2;a=a+pp(x);}}else{while(a!=k){x=x+(n-m)*2;a=a+pp(x);if(a==k)break;else{x=x+m*2-2;a=a+pp(x);}}}printf("%d\n",x);}return 0; }
總結
以上是生活随笔為你收集整理的zcmu-1643 报数游戏的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: zcmu-1644 多连块拼图
- 下一篇: java listview用法_Java