%{
#include <stdio.h>
#include <math.h>
%}
DIGIT [0-9]
%%
{DIGIT}+ {
int num = atoi(yytext);
int original = num;
int n = strlen(yytext);
int sum = 0;
while (num > 0) {
int digit = num % 10;
sum += pow(digit, n);
num /= 10;
}
if (sum == original) {
printf("%s is an Armstrong number\n", yytext);
} else {
printf("%s is not an Armstrong number\n", yytext);
}
}
.|\n ; // Ignore other characters
%%
int main() {
yylex();
return 0;
}
JXsKI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYXRoLmg+CiV9CgpESUdJVCBbMC05XQolJQp7RElHSVR9KyB7CiAgICBpbnQgbnVtID0gYXRvaSh5eXRleHQpOwogICAgaW50IG9yaWdpbmFsID0gbnVtOwogICAgaW50IG4gPSBzdHJsZW4oeXl0ZXh0KTsKICAgIGludCBzdW0gPSAwOwoKICAgIHdoaWxlIChudW0gPiAwKSB7CiAgICAgICAgaW50IGRpZ2l0ID0gbnVtICUgMTA7CiAgICAgICAgc3VtICs9IHBvdyhkaWdpdCwgbik7CiAgICAgICAgbnVtIC89IDEwOwogICAgfQoKICAgIGlmIChzdW0gPT0gb3JpZ2luYWwpIHsKICAgICAgICBwcmludGYoIiVzIGlzIGFuIEFybXN0cm9uZyBudW1iZXJcbiIsIHl5dGV4dCk7CiAgICB9IGVsc2UgewogICAgICAgIHByaW50ZigiJXMgaXMgbm90IGFuIEFybXN0cm9uZyBudW1iZXJcbiIsIHl5dGV4dCk7CiAgICB9Cn0KLnxcbiAgICA7IC8vIElnbm9yZSBvdGhlciBjaGFyYWN0ZXJzCiUlCgppbnQgbWFpbigpIHsKICAgIHl5bGV4KCk7CiAgICByZXR1cm4gMDsKfQo=