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;
}
 
 

