解法1:ループ
a + b の値を 10 で割った商が 0 以下になるまで,桁数を代入する変数(以下のコードでは x )をインクリメントした。
#include <iostream>
using namespace std;
int main() {
long long int a, b, c;
int x;
bool flg = true;
while (1) {
cin>>a;
if (cin.eof()) break;
cin>>b;
c=a+b;
x = 1;
flg = true;
while (flg) {
if ((c=c/10)>0)
x++;
else
flg = false;
}
cout<<x<<endl;
}
return 0;
}
解法2:対数
正の数 N の整数部分が n 桁のとき,n − 1 ≤ log10 N < n なので,log10 N の値を int 型にキャストして 1 加えた。
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
long long int a, b;
while (cin >> a >> b)
cout << (int)log10((double)(a+b)) + 1 << endl;
}