标签:
题目:
Description
输入一个四个数字组成的整数 n,你的任务是数一数有多少种方法,恰好修改一个数字,把它 变成一个完全平方数(不能把首位修改成0)。比如 n=7844,有两种方法:3844=62^2和 7744=88^2。
Input
Output
Sample Input
2 7844 9121
Sample Output
?Case 1: 2 Case 2: 0
因为范围比较小,所以直接枚举就可以判断是不是完全平方数。
而且这样的话,可以忽略掉首位不能变成0这个限制了,代码就变得更有对称美。
代码:
#include<iostream> using namespace std; bool ok(int n) { for (int i = 32; i<100; i++)if (i*i == n)return true; return false; } int f(int n) { int a, b, c, d; a = n / 1000; b = n / 100 % 10; c = n / 10 % 10; d = n % 10; int sum = 0; for (int i = 0; i <= 9; i++)if (ok(n + (i - a) * 1000))sum++; for (int i = 0; i <= 9; i++)if (ok(n + (i - b) * 100))sum++; for (int i = 0; i <= 9; i++)if (ok(n + (i - c) * 10))sum++; for (int i = 0; i <= 9; i++)if (ok(n + i - d))sum++; if (ok(n))sum -= 4; return sum; } int main() { int t, n; cin >> t; for (int cas = 1; cas <= t; cas++) { cin >> n; cout << "Case " << cas << ": " << f(n) << endl; } return 0; }
标签:
原文地址:http://blog.csdn.net/nameofcsdn/article/details/52261887