Descripción del título:
ingrese un número n tal que a + b = n, y b sea el resultado de establecer un solo dígito en 0 en a, y genere cada caso de a y b
Idea de algoritmo:
- Idea general: enumere a, calcule b mediante la fórmula y luego determine si b es el resultado de establecer un dígito en 0 en un
- Establezca una posición determinada en 0: a / (10 * t) + a% t, donde t es 1,10,100,1000 para indicar uno, diez, cien, mil y establecerlo en 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;
}
Todos los códigos:
#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;
}