湖南11省赛【B】 报数游戏
2014-05-19 08:51
260 查看
n个人站成一行玩一个报数游戏。所有人从左到右编号为 1到 n。游戏开始时,最左边的人报 1,他右边的人报 2,编号为 3的人报 3,等等。当编号为 n的人(即最右边的人)报完 n之后,轮到他左边的人(即编号为-1的人)报 n+1,然后编号为 n-2的人报 n+2,以此类推。当最左边的人再次报数之后,报数方向又变成从左到右,依次类推。
为了防止游戏太无聊,报数时有一个特例:如果应该报的数包含数字 7或者是 7的倍数,他应当用拍手代替报数。下表是 n=4的报数情况(X表示拍手)。当编号为 3的人第 4次拍手的时候,他实际上数到了 35。
给定 n,m和 k,你的任务是计算当编号为 m的人第 k次拍手时,他实际上数到了几。
输入:
包含不超过 10组数据。每组数据占一行,包含三个整数 n,m和k(2<=n<=100, 1<=m<=n,k<=100)。输入结束标志为 n=m=k=0。
输出:
对于每组数据,输出一行,即编号为 m的人第 k次拍手时,他实际上数到的那个整数。
找规律即可。
为了防止游戏太无聊,报数时有一个特例:如果应该报的数包含数字 7或者是 7的倍数,他应当用拍手代替报数。下表是 n=4的报数情况(X表示拍手)。当编号为 3的人第 4次拍手的时候,他实际上数到了 35。
给定 n,m和 k,你的任务是计算当编号为 m的人第 k次拍手时,他实际上数到了几。
输入:
包含不超过 10组数据。每组数据占一行,包含三个整数 n,m和k(2<=n<=100, 1<=m<=n,k<=100)。输入结束标志为 n=m=k=0。
输出:
对于每组数据,输出一行,即编号为 m的人第 k次拍手时,他实际上数到的那个整数。
找规律即可。
#include<iostream> using namespace std; int main() { int n,m,k,i,j,s,x,y,m1,f; while(cin>>n>>m>>k) { if(n==0&&m==0&&k==0) break; y=0; s=1; f=n-m; m1=m; while(y!=k) { x=m; if(x%7==0) { ++y; } else { while(x>0) { if((x%10)==7) { ++y; break; } x=x/10; } } if(y==k) break; if(f==0&&m1!=1) m+=2*(m1-1); else if(m1==1) { m+=2*(n-m1); } else { if(s) { m+=2*(n-m1); s=!s; } else { m+=2*(m1-1); s=!s; } } } cout<<m<<endl; } return 0; }
相关文章推荐
- 湖南11省赛【E】 盒子游戏
- 湖南第七届省赛 报数游戏
- 报数游戏湖南2011省赛
- ACM--模拟--nyoj 559--报数游戏--湖南第七届省赛
- 【程序11】猜数游戏
- 24点游戏是经典的纸牌益智游戏。 常见游戏规则: 从扑克中每次取出4张牌。使用加减乘除,第一个能得出24者为赢。(其中,J代表11,Q代表12,K代表13,A代表1)
- 英雄会报数游戏(3)实现
- 5-4 jmu-报数游戏 (15分)
- NYOJ 559 报数游戏
- demo2_简单的报数游戏
- 湖南11省赛【A】 一二三
- DirectX 11游戏编程学习笔记之1: 开场白
- toj 4316 报数游戏
- hunnuoj11186—报数(湖南第七届省赛)
- 报数游戏 seven eleven
- 编写函数模拟掷骰子的游戏(两个骰子)。第一次掷的时候,如果点数之和为7或11则获胜;如果点数之和为2、3或12则落败;其他情况下的点数之和称为“目标”,游戏继续。在后续的投掷中,如果玩家再次掷出“目标
- 报数游戏
- cocos2d-x游戏实例(11)-触屏主角移动轨迹
- [COCI11-12 4#]删数游戏(版本2)
- 一直报数游戏