题解:
仔细思考会发现:
(1)在所有的牌中一定是1先用完,所有我们减少思考的问题规模,直接考虑1使用完的情况。
(2)但是当1使用完并不代表不能继续往下拼,在1刚用完的地方到下一个使用1的地方这之间的数是可以继续拼的。
例如:当i=300时,拼到991,1就用完了,但是992、993、994、995、996、997、998、999这些是不需要用1拼的。
所以 i=count(结合下面代码)时循环并不结束,i
答案:
3181
代码:
#include
using namespace std;
int main()
{
int i=0;// 1的个数
int count=0;// 统计用到 1 的个数
int j=1;
cin>>i;//这里写输入入口只是为了方便测试数据
while(1)
{//直接设置一个无限循环,等找到符合的值再break跳出
int x=j;
while(x)
{//利用循环对数字进行个位、十位、百位等的分解
if(x%10==1)
{//有1就计数
count++;
}
x/=10;
}
if(i<count)
{//如果这个数使用到的 1 的个数已经比所给出的 1 多,输出前一个数并终止循环
cout<<j-1<<endl;
break;
}
j++;
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)