起床的烦恼(UPC练习)

2023-12-31 06:01:22
题目描述

众所周知,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;
}

文章来源:https://blog.csdn.net/2301_81591020/article/details/135300577
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。