yukicoder No.544 Delete 7
問題
No.544 Delete 7 - yukicoder
7を含んだ整数である入力を、7を使わない2つの整数の和で表してください。
解説
整数の桁を見ていって、7であれば3と4に分解することを考えます。7でなければ、そのまま使います。具体的には、 1273=(1233,40) 、 27789=(23389,4400)のようにすれば、7を使わずに2つの整数で表せます。
今回は入力を整数で受け取り、桁を見て行きながら答えとなる変数a,bに足していく形をとります。ここではfor文の条件式をn>0とし、繰り返しの中で n/=10 としながら n%10 で各桁を見ます。このとき、ループ変数として使うi をpow(10,i) として使うことで、何桁目を見ているかを表現できます。
ある桁が7の時、aに3側を、bに4側を足して行きます。7以外では、aにそのまま足します。
bは7を分離するときだけ使うことがキモです。
int main(){ int n; cin>>n; int a=0,b=0; for(int i=0;n>0;i++){ if(n%10==7){ a+=pow(10,i)*3; b+=pow(10,i)*4; }else { a+=pow(10,i)*(n%10); } n/=10; } cout<<a<<" "<<b<<endl; return 0; }