%{
#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=