Số bình phương đặc biệt
Số 45 là một số mà 452 = 2025 = 20 + 25 = 45, và có rất nhiều số dạng như vậy, ví dụ số 9, 55, 99. Cụ thể là có một dãy số thỏa điều kiện trên gồm: 1, 9, 45, 55, 99, 297, 703,999, 2223,2728,...
Task
Viết chương trình kiểm tra xem N cho trước có thỏa điều kiện của dãy số trên hay không?.
Input • Gồm một dòng duy nhất chứa các số nguyên N thỏa N ≤ 106 .
Output • In ra YES nếu thỏa và NO nếu ngược lại.
Samples
input 55
output YES
input 155
output NO
Code:
#include <bits/stdc++.h>
using namespace std;
int count(int n)
{
int i = 0;
while( n != 0)
{
int k = n % 10;
n = n / 10;
i++;
}
return i;
}
long long mux(int z,int k)
{
long long tich = 1;
for(int i = 1 ; i <= k ; i++)
tich = tich*z;
return tich;
}
int main()
{
int n;
cin>>n;
int k = count(n);
long long c = mux(n,2) % mux(10,k);
long long d = mux(n,2) / mux(10,k);
if((c+d) == n)
cout<<"YES";
else
cout<<"NO";
return 0;
}