Uva 944 - Happy Numbers
Accepted
// Header file begin #include<iostream> #include<cstdio> #include<cstring> #include<map> #include<string> #include<vector> #include<cmath> #include<cctype> #include<sstream> #include<set> #include<list> #include<stack> #include<utility> #include<queue> #include<algorithm> #include<cstdlib> // End //.......... // Macro #define sf scanf #define pf printf #define lp1(i,n) for(i=0;i<n;i++) #define lp2(i,n) for(i=1;i<=n;i++) #define mem(c,v) memset(c,v,sizeof(c)) #define cp(a) cout<<" "<<a<<" " #define nl puts("") #define sq(x) ((x)*(x)) #define all(x) x.begin(),x.end() #define reall(x) x.rbegin(),x.rend() #define s_wap(x,y) x^=y;y^=x;x^=y; #define sz size() #define gc getchar() #define pb push_back #define freader freopen("input.txt","r",stdin) // End......... // Size #define mx7 20000100 #define mx6 1500000 #define mx5 100005 #define mx4 1000100 #define inf 1<<30 //infinity value #define eps 1e-9 #define mx (65540) #define mod 1000000007 #define pi acos(-1.0) // Macros for Graph #define white 1 #define gray 2 #define black 3 #define nil 0 using namespace std; /***************/ // typedef typedef long long LL; typedef long L; typedef unsigned long long ull; typedef unsigned long ul; typedef unsigned int ui; typedef pair<int, int> pii; typedef vector<int>vi; typedef vector<long long> vll; typedef vector<long>vl; typedef vector<char>vch; typedef vector<string>vs; typedef map<int,int>mpii; typedef map<int,bool>mpbi; typedef map<long,bool>mpbl; typedef map<long long,bool>mpbll; typedef map<char,int>mpci; typedef map<char,bool>mpbc; typedef map<string,int>mpsi; typedef map<long long,long long>mpll; // template template<class T> T gcd(T a, T b ) {return b!=0?gcd<T>(b,a%b):a;} template<class T> T large(T a, T b ) {return a>b?a:b;} template<class T> T small(T a, T b ) {return a<b?a:b;} template<class T> T diffrnce(T a, T b) {return a-b<0?b-a:a-b;} int happy[mx4]; bool isHappy(int n) /* in this function we check is n a happy number. if n is a happy number than we store the number of iteration on that number. */ { if(n==1) { happy[n] = 1; return true; } int ctch=n,sum=0,cnt=0; while(n>0) { sum += sq(n%10); n/=10; if(n==0) { cnt++; n=sum; sum=0; if(n==1) { break; } else if(n>=2 and n<=4) { break; } } } if(n==1) { happy[ctch]=cnt+1; return true; } else { return false; } } int main() { int x,y,f=0; while(~sf("%d %d",&x,&y)) { if(f) // manage the last newline's story { nl; } f=1; for(int i=x;i<=y;i++) { if(isHappy(i)) { pf("%d %d\n",i,happy[i]); } } } return 0; }
Comments
Post a Comment