#include <stdio.h>
#include <stdio.h>
 
int isom(int n) {
    int sum = 0;
 
    for (int i = 0; i <= n; i++) {
        int sq = i * i;     // 二乗
        int mod = 1;
        int x = i;
 
        // iの桁数に応じた10の累乗を作る
        if (i == 0) mod = 10;
        else {
            while (x > 0) {
                mod *= 10;
                x /= 10;
            }
        }
 
        // 二乗の末尾が同じなら自己同形数
        if (sq % mod == i) {
            sum += i;
        }
    }
 
    return sum;
}
int main(void) {
    printf("%d\n", isom
(10));  // → 12     printf("%d\n", isom
(99));  // → 113     return 0;
}
 
 
 
				I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRpby5oPgoKaW50IGlzb20oaW50IG4pIHsKICAgIGludCBzdW0gPSAwOwoKICAgIGZvciAoaW50IGkgPSAwOyBpIDw9IG47IGkrKykgewogICAgICAgIGludCBzcSA9IGkgKiBpOyAgICAgLy8g5LqM5LmXCiAgICAgICAgaW50IG1vZCA9IDE7CiAgICAgICAgaW50IHggPSBpOwoKICAgICAgICAvLyBp44Gu5qGB5pWw44Gr5b+c44GY44GfMTDjga7ntK/kuZfjgpLkvZzjgosKICAgICAgICBpZiAoaSA9PSAwKSBtb2QgPSAxMDsKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgd2hpbGUgKHggPiAwKSB7CiAgICAgICAgICAgICAgICBtb2QgKj0gMTA7CiAgICAgICAgICAgICAgICB4IC89IDEwOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyDkuozkuZfjga7mnKvlsL7jgYzlkIzjgZjjgarjgonoh6rlt7HlkIzlvaLmlbAKICAgICAgICBpZiAoc3EgJSBtb2QgPT0gaSkgewogICAgICAgICAgICBzdW0gKz0gaTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIHN1bTsKfQppbnQgbWFpbih2b2lkKSB7CiAgICBwcmludGYoIiVkXG4iLCBpc29tKDEwKSk7ICAvLyDihpIgMTIKICAgIHByaW50ZigiJWRcbiIsIGlzb20oOTkpKTsgIC8vIOKGkiAxMTMKICAgIHJldHVybiAwOwp9CgoK