起床的烦恼(UPC练习)
题目描述
众所周知,Nono是一只喜欢睡懒觉的熊猫。“我曾经也是早睡早起,直到我膝盖中了一箭”,Nono如是解释道。现在Nono又遇到了一个难题:他睡醒了…但是显然,Nono并不想起床……于是他决定用如下方法来解决这个问题。 Nono从一开始数数,他每数一个数时会计算这个数中1的个数(如211中有两个1)并对1的个数进行累和,当1的个数之和不小于x时,Nono就要起床了。特别需要注意的是,当Nono数数达到10000时,Nono就会因为数太久而再次睡着…… 现在Nono定下了x,他想知道他数到多少就需要起床了(或是他可以再睡一觉)。
输入
有多行。第一行为一个整数T(T<=5000)表示数据组数。
接下来的T行每行是一个整数x(0<x<30000)。
输出
有T行。对于每组数据,如果Nono会数到睡着则输出"zzz",否则输出一个数表示Nono需要数到多少。
样例输入?Copy
2 2 5000
样例输出?Copy
10 zzz
代码实现:
#pragma GCC optimize(2)
#include <bits/stdc++.h>
using namespace std;
int main()
{
?? ?ios::sync_with_stdio;
? ? cin.tie(0);
? ? cout.tie(0);
? ? int a;
? ? cin>>a;
? ? int sign;
? ? while(a--)?
? ? {?
? ? ? ? sign=0;
? ? ? ? int n,m,sum=0;
? ? ? ? cin>>n;
? ? ? ? for(int i=1;i<10000;i++)
? ? ? ? { ?
? ? ? ? ? ? m=i;
? ? ? ? ? ? while(m!=0)
? ? ? ? ? ? { ??
? ? ? ? ? ? ? ? if(m%10==1)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? sum++;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? m=m/10;
? ? ? ? ? ? }
? ? ? ? ? ? if(sum>=n)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? cout<<i<<"\n";
? ? ? ? ? ? ? ? sign=1;
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
?
? ? ? ? }
? ? ? ? if(sign!=1)
? ? ? ? ? ? cout<<"zzz"<<"\n";
? ? }
? ? return 0;
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!