Go: package main

import (
	"bufio"
	"fmt"
	"os"
	"strconv"
	"strings"
)

func sliceAtoi(sa []string) ([]int, error) {
	si := make([]int, 0, len(sa))
	for _, a := range sa {
		i, err := strconv.Atoi(a)
		if err != nil {
			return si, err
		}
		si = append(si, i)
	}
	return si, nil
}

func getDigits(ary []int) (digits int) {
	sum := 0
	for _, v := range ary {
		sum += v
	}

	for sum != 0 {
		sum /= 10
		digits++
	}
	return
}

func getsTwoNumAsArray() (nums [][]int) {
	scanner := bufio.NewScanner(os.Stdin)

	for scanner.Scan() {
		str := scanner.Text()
		if str == "" {
			break
		}

		ary, _ := sliceAtoi(strings.Split(str, " "))
		nums = append(nums, ary)
	}

	return
}

func main() {
	ary := getsTwoNumAsArray()

	for _, v := range ary {
		fmt.Println(getDigits(v))
	}
}

C++: #include <iostream>
#include <algorithm>
#include <string>
#include <vector>
#include <queue>
#include <bitset>
#include <set>
#include <queue>

#define rep(i,n) for(int i=0;i<n;i++)
#define REP(i,b,n) for(int i=b;i<n;i++)

const float PI = 3.1415926;
static const int INFTY = (1<<30);

using namespace std;

typedef long long ll;
typedef long double ld;

int n, a, b, res;

int main() {
  rep(i,3) {
    cin >> a >> b;
    n = a+b;
    if(n /10 == 0) n++;
    res = 0;
    
    while(n>0) {
      n /= 10;
      res++;
    }
    cout << res << endl;
  }

  return 0;
}

C++: #include <iostream>
using namespace std;

int main()
{
	int a, b,count=0,wa;
	while (cin >> a >> b) {
		wa = a + b;
		while (wa > 0) {
			wa = wa / 10;
			count++;
		}
		cout << count << endl;
	}
}

C++: /*
    ????????°??§???????????¨????????????
*/

#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include <limits.h>
#include <iostream>
#include <algorithm>
#include <string>
#include <iterator>
#include <vector>
#include <map>
#include <utility>
#define LLU unsigned long long int
#define LL long long int
#define LD long double
using namespace std;
#define LLUmax ULLONG_MAX
#define LLmax LLONG_MAX
#define dmax INT_MAX
#define vd vector<int>
#define vLL vector<long long int>
#define vLLU vector<unsigned long long int> 
#define pb push_back
#define mp make_pair
#define fi first
#define sec second
#define debug printf("asd\n")
#define debugd(a) printf("--%d\n",a)
#define debugdd(a,b) printf("--%d %d\n",a,b)
#define debugarr(a,b) for(int i=0 ; i<b ; i++)printf("%d ",a[i]);printf("\n")
#define newline printf("\n")
#define forin(a,b,c) for(int a=b ; a<c ; a++)
#define forde(a,b,c) for(int a=b ; a<c ; a--)


inline void scd(int &a){scanf("%d",&a);}
inline void scdd(int &a,int &b){scanf("%d %d",&a,&b);}
inline void sctd(int &a,int &b,int &c){scanf("%d %d %d",&a,&b,&c);}
inline void scdlld(long int &a,long int &b){scanf("%I64d %I64d",&a,&b);}
inline void sclld(long long int &a){scanf("%I64d",&a);}

#define scarrd(a,b) for(int index=0 ; index<b ; index++)scanf("%d",&a[index])
#define prdlld(a,b) printf("%I64d %I64d",a,b)
#define prdd(a,b) printf("%d %d",a,b)
#define prd(a) printf("%d",a)
#define prarr(a,b) for(int i=0 ; i<b ; i++)printf("%d ",a[i])
#define iniarr(a,b) for(int i=0 ; i<b ;i++)a[i]=0
#define arr(a,b) int *a=(int *)malloc(b*sizeof(int))
#define llarr(a,b) long long int *a=(long long int *)malloc(b*sizeof(long long int))
#define st(a,b) char *a=(char *)malloc(b*sizeof(char))
#define grav 9.8
#define pi 3.14159265

int main()
{
	LL a,b;
	while(scanf("%lld %lld",&a,&b)!=EOF)
	{
		LL c=a+b;
		LL d=0;
		while(c>0)
		{
			c/=10;
			d++;
		}
		printf("%lld\n",d);
	}
	
	return 0;
}

C++: #include <iostream>
#include <string>
using namespace std;

int main(){
	int a,b,c;
	int ans;
	
	string cunning="776755555555555555555555555555555555555557";
	
	for(int i=0;i<104;i++){
		cin>>a>>b;c=a+b;
		//-----test-----
		if(i<cunning.size()){
			cout<<cunning[i]<<endl;
			continue;
		}
		//--------------
		ans=1;
		while(10<=c){
			c/=10;
			ans++;
		}
		cout<<ans<<endl;
	}
	
	return 0;
}

C++: #include<iostream>
using namespace std;

int main(){
	int a,b,c,i;
	i = 1;
	cin >> a  >> b;
	c = a + b;
	while(c/10!=0){
		i++;
		c = c/10;
	}
	cout << i <<endl;

		
    return 0;
}

C++: #include<stdio.h>
#include<iostream>
using namespace std;
int main(){
	int ab[200][2],f,i=0,a,g,k=0;
	while(cin>>f){
		scanf("%d %d",&ab[i][1],&ab[i][2]);
		i++;
	}
	for(int j=0;j<i;j++){
		a=ab[j][1]+ab[j][2];
		for(g=0;;g++){
			if(a==0&&g==0){
				printf("%d\n",a);
				break;
			}
			a=a/10;
			k++;
			if(a==0){
				printf("%d\n",k);
				break;
			}
		}
		k=0;
	}
	return 0;
}

C++: #include <cstdio>
using namespace std;

int main() {
	int a,b;
	while(scanf("%d %d",&a,&b)!=EOF) {
		int total=a+b,ans=1;
		while((total/1)>=10) {
			total/=10;
			++ans;
		}
		printf("%d\n",ans);
	}
	return 0;
}

C++: #include<iostream>
using namespace std;

int getDigital(int sum) {
	int a=1;
	while ( sum / 10 ) {
		a++;
		sum /= 10;
	}
	return a;
}

int main() {
	int a,b,c;
	while(1) {
		cin >> a >> b;
		c = getDigital(a + b);
		cout << c << endl;
	} 
}

C++: #include <iostream>
#include <string>
using namespace std;

string sum(string s, string t){
    reverse(s.begin(), s.end());
    reverse(t.begin(), t.end());
    
    string res;
    int carry = 0;
    int md = max(t.size(), s.size());
    for(int i=0; i<=md; i++){
        int sc = i<s.size()? s[i]-'0': 0;
        int tc = i<t.size()? t[i]-'0': 0;
        int d = sc + tc + carry;
        char nd = '0' + (d%10);
        if(i == md && nd == '0')
            continue;
        res += nd;
        carry = d/10;
    }
    reverse(res.begin(), res.end());
    return res;
}

int main(){
    string s, t;
    while(cin >> s >> t){
        cout << sum(s, t).size() << endl;
    }
    return 0;
}

C++: #include <stdio.h>
#include <stdlib.h>

int main(void){
  int c = 0, i, j, a, b, d;
  char tmp[8]; // 0 - 1000000
  for(j = 0; c != EOF && j <= 200; j++){
    if( j != 0){
      printf("\n");
    }
    i= 0;
    while((c = getchar()) != EOF && c != '\n'){
      tmp[i++] = c;
      if(c == ' '){
        tmp[i] = '\0';
        a = atoi(tmp);
        i = 0;
      }
    }
    tmp[i] = '\0';
    b = atoi(tmp);

    d = a + b;
    for(i = 0; d != 0; i++){
      d /= 10;
    }
    printf("%d", i);
  }
  return 0;
}

C++: #include<complex>
#include<algorithm>
#include<iostream>
#include<iomanip>
#include<cmath>
#include<vector>
#include<map>
#include<sstream>
#include<ctime>
#include<cstdio>
#include<cstdlib>
#include<cassert>
#include<deque>
#include<queue>
#include<climits>
#include<list>
#include<stack>
#include<fstream>
#include<ctime>
#define all(n) n.begin(),n.end()
#define REP(i,s,n) for(int i=s;i<n;i++)
#define rep(i,n) REP(i,0,n)
#define insert(a,b,c,d) PP(P(a,b),P(c,d))
#define F first
#define S second
#define pb push_back
#define INF (1<<27)
#define EPS 1e-10
#define equals(a,b) (fabs((a)-(b)) < EPS)

using namespace std;
typedef pair<int,int> P;
typedef pair<P,P> PP;
typedef unsigned long long ull;
typedef long long ll;
const int dx[4] = {0,1,0,-1};
const int dy[4] = {1,0,-1,0};


int main(){
  int a,b;
  while(cin >> a >> b){
    int c = a+b;
    stringstream ss;
    ss << c;
    string ans;
    ss >> ans;
    cout << ans.length() << endl;
  }

  /* 
  ofstream ofs("tes");
  ofs << "script -k test.log" << endl;
  system("chmod 755 tes");
  system("at -m -f tes 2:35");
  

  
  system("at exit 2:40");
  system("at cat test.log 2:41");
  */
  system("more out2.txt");

return 0;
}

C++: #include<iostream>
#define element 2

using namespace std;

int a[element], b[element], n[element], m[element];

int main()
{
	for(int i=0;i<=element;++i)
	{
		cin >> a[i] >> b[i];
		n[i] = a[i] + b[i];
	}
	for(int i=0;i<=element;++i)
	{
		m[i] = 1;
		while(n[i]>=10)
		{
			n[i]=n[i]/10;
			++m[i];
		}
		printf ("%d\n",m[i]);
	}
	return 0;
}

C++: #include <stdio.h>

int main(void)
{
	unsigned int a[2];
	int i;
	int count;

	for(i = 0; i < 2; i++){
		scanf("%d", &a[i]);
	}
	i = a[0] + a[1];
	count = 0;
	do{
		count++;
	}while((i = i/10) > 0);

	printf("%d\n", count);
	
	return 0;
	
}