日剧与挂机游戏

编程入门 行业动态 更新时间:2024-10-27 22:30:57

<a href=https://www.elefans.com/category/jswz/34/1725585.html style=日剧与挂机游戏"/>

日剧与挂机游戏

Description

banfcc最近迷上了一款挂机游戏。
这个游戏挂1分钟升到1级,再挂10分钟升到2级,再挂100分钟升到3级,以此类推……
因为banfcc还要肝日剧,所以很久没有管这个游戏,现在告诉你他挂机了多久,聪明的小朋友能算出他已经几级了吗?

Input

多组数据

第一行一个T(1<=T<=1000)代表数据组数

接下来T行每行一个数字n代表挂机的时间(0<=n<=101000)

保证没有前导0

Output

一个整数k代表等级数

Sample Input

13
0
1
10
11
10000
90000
11211
11109
11201
11111111111111111111
123456789123456789123456789123456789123456789
10211
210
Sample Output

0
1
1
2
4
5
5
4
5
20
45
4
3

思路:
因为输入较大,数值类型实现不了,所以得用字符串类型,存储在数组里也方便读取某个位上的值。
1级是1分钟,2级是11分钟,3级是111分钟,四级是1111分钟,n级就是nnn…n(n个 n)分钟。
核心是判断这个输入的数是大于等于1111…11(n个1),小于1111…11(n+1个1),便可判断出这个数是n级
我们可以弄个循环,从第一位开始往后逐个取出当前位置的数进行判断。
首先看第一位就可大致判断出有多少级。
如果第一位是大于1的数,那么这个输入的数肯定大于1111…11(n个1),小于1111…1(n+1个1),也就是n级,还不到n+1级,可以直接输出,跳出循环了。
如果第一位等于1,就得往后看,如果接下来的位上是大于1的数,输入的数也就同上,大于1111…11(n个1),小于1111…11(n+1个1),等级也同上,为n级,可输出后退出循环。
以此类推。
但若从第二位开始,前面都是1,后面有位上的数是0,那说明这个数是小于1111…11(n个1)的,但是大于1111…11(n-1个1),同样也可以直接输出,跳出循环。
如果每个位上都是1,那就是等于1111…11(n个1)了,为n级。

#include<stdio.h>
#include<string.h>
int main(){int i,j,n,t,s;scanf("%d",&t);char x[1010];while(t--){scanf("%s",x);n=strlen(x);s=n;for(i=0;i<n;i++){if(x[i]>49)//大于1{printf("%d\n",s);//大于1111.....11(s个1)了,直接输出break;}else if(x[i]==48){//等于0s--;//小于1111.....11(s个1)了,减去1后直接输出printf("%d\n",s);break;}if(i==n-1&&x[i]==49)//如果全都是1printf("%d\n",s);}}return 0;
}

更多推荐

日剧与挂机游戏

本文发布于:2024-02-07 06:34:32,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1754034.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:日剧   游戏

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!