%{
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int is_armstrong(int num) {
int original = num;
int temp = num;
int d = 0;
int result = 0;
while (temp != 0) {
temp /= 10;
d++;
}
}
temp = original;
while (temp != 0) {
int remainder = temp % 10;
result
+= (int
)round(pow
(remainder
, d
)); temp /= 10;
}
return (result == original);
}
%}
%%
[0-9]+ {
int num = atoi(yytext);
if (is_armstrong(num))
printf("Armstrong");
else
printf("Not an armstrong");
}
\n|. {
}
%%
int main() {
printf("Enter numbers to check (press Ctrl+D to stop):\n");
yylex();
return 0;
}
JXsKI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPG1hdGguaD4KaW50IGlzX2FybXN0cm9uZyhpbnQgbnVtKSB7CiAgICBpbnQgb3JpZ2luYWwgPSBudW07CiAgICBpbnQgdGVtcCA9IG51bTsKICAgIGludCBkID0gMDsKICAgIGludCByZXN1bHQgPSAwOwogICAgICAgIHdoaWxlICh0ZW1wICE9IDApIHsKICAgICAgICAgICAgdGVtcCAvPSAxMDsKICAgICAgICAgICAgZCsrOwogICAgICAgIH0KICAgIH0KICAgIHRlbXAgPSBvcmlnaW5hbDsKICAgIHdoaWxlICh0ZW1wICE9IDApIHsKICAgICAgICBpbnQgcmVtYWluZGVyID0gdGVtcCAlIDEwOwogICAgICAgIHJlc3VsdCArPSAoaW50KXJvdW5kKHBvdyhyZW1haW5kZXIsIGQpKTsgCiAgICAgICAgdGVtcCAvPSAxMDsKICAgIH0KICAgIHJldHVybiAocmVzdWx0ID09IG9yaWdpbmFsKTsKfQolfQoKJSUKWzAtOV0rIHsKICAgIGludCBudW0gPSBhdG9pKHl5dGV4dCk7IAogICAgaWYgKGlzX2FybXN0cm9uZyhudW0pKSAKICAgICAgICBwcmludGYoIkFybXN0cm9uZyIpOwogICAgIGVsc2UgCiAgICAgICAgcHJpbnRmKCJOb3QgYW4gYXJtc3Ryb25nIik7Cn0KClxufC4gewoKfQolJQppbnQgbWFpbigpIHsKICAgIHByaW50ZigiRW50ZXIgbnVtYmVycyB0byBjaGVjayAocHJlc3MgQ3RybCtEIHRvIHN0b3ApOlxuIik7CiAgICB5eWxleCgpOwogICAgcmV0dXJuIDA7Cn0=