求这道题C++代码 150
题目描述已知m加上m的各个数字之和为n,则说明m和n是一对cp。给出n(1<=n<=100000)。求n的最小cp。无解输出0。输入输入多组数据。(小于100组)每组数据...
题目描述
已知m加上m的各个数字之和为n,则说明m和n是一对cp。给出n(1<=n<=100000)。
求n的最小cp。无解输出0。
输入
输入多组数据。(小于100组)
每组数据一行,为一个数n。(1<=n<=100000)
输出
每组数据输出一行。为n的cp。
输入样例
216
121
输出样例
198
0 展开
已知m加上m的各个数字之和为n,则说明m和n是一对cp。给出n(1<=n<=100000)。
求n的最小cp。无解输出0。
输入
输入多组数据。(小于100组)
每组数据一行,为一个数n。(1<=n<=100000)
输出
每组数据输出一行。为n的cp。
输入样例
216
121
输出样例
198
0 展开
2个回答
展开全部
我给你说个思路,你自己写。
假如给的n 是一个五位数 ,假如等于45678.。那么m 的值介于 (45678-5*9)到(45678)之间。
根据你的题意
:有如下等式 m + x = n;
因为m 是五位数 .所以x的最大值是 5*9 = 45;
所以m + 45 >= n;
也就可以推断出 n-45<= m <= n; 在这个小的范围内穷举,肯定找的到答案。
好了,思路有了,代码你自己写
write by ACMer.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <iostream>
using namespace std;
int main()
{
int t;
while(cin >> t) {
int n;
for(n=1;n<t;n++) {
int a=n;
int b=a;
while(a>9) {
b+=a%10;
a/=10;
}
b+=a;
if(b==t)
break;
}
if(n==t) {
cout << 0 << endl;
}else {
cout << n << endl;
}
}
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询