专栏文章
题解:CF2132B The Secret Number
CF2132B题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mio3znh8
- 此快照首次捕获于
- 2025/12/02 12:59 3 个月前
- 此快照最后确认于
- 2025/12/02 12:59 3 个月前
题目大意
已知 ,给定 ,请你求出 。
解法说明
通过简单的转化,可以得到以下式子:
也就是说,我们可以枚举 ,然后就可以求出每一个整数 。
代码示例
CPP#include<bits/stdc++.h>
#define int long long
using namespace std;
int t;
int tab[]={11,101,1001,10001,100001,1000001,10000001,100000001,1000000001,10000000001,100000000001,1000000000001,10000000000001,100000000000001,1000000000000001,10000000000000001,100000000000000001,1000000000000000001};
//打表
int ans[25],tmp,cnt;
//由于需要从大到小输出,还要计数,所以使用数组存一下
signed main()
{
// int k=1;
// for(int i=1;i<=18;i++)
// {
// cout<<10*k+1<<",";
// k*=10;
// }
//打表代码
cin>>t;
while(t--)
{
cnt=0;//多测不清空
tmp=0;//直接见祖宗
int n;
cin>>n;
for(int i=0;tab[i]<=n;i++)
{
if(n%tab[i]==0) //如果得到的结果为整数,即得到了一个合法的x
{
ans[++tmp]=n/tab[i];//记录x
cnt++;//计数
}
}
if(cnt==0) cout<<0<<endl;//特判无解
else
{
cout<<cnt<<endl;
for(int i=tmp;i>=1;i--) cout<<ans[i]<<" ";
cout<<endl;
}
}
return 0;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...