题目描述:
输入一个数n,使得a+b=n,并且b是a中将一位数置0后得到的结果,输出a,b的每种情况
算法思想:
- 大致思路:枚举a,通过式子计算出b,然后再判断b是否为a中将一位数置0后得到的结果
- 将某一位置0:a/(10*t)+a%t,t为1,10,100,1000表示个,十,百,千,置0
long long t=1;
while(a>=t){
long long b = a/(t*10)*t+a%t;
if((a+b)==n){
cout<<"a = "<<a<<' '<<"b = "<<b<<endl;
k++;
break ; // 当a确定时候b也唯一确定,所以直接break
}
t*=10;
}
全部代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
int main(){
long long n,a;
cin>>n;
int k=0;
for(a=n/2;a<n;a++){
long long t=1;
while(a>=t){
long long b = a/(t*10)*t+a%t;
if((a+b)==n){
cout<<"a = "<<a<<' '<<"b = "<<b<<endl;
k++;
break ; // 当a确定时候b也唯一确定,所以直接break
}
t*=10;
}
}
cout<<"以上"<<k<<"个解"<<endl;
return 0;
}