UVA256 Quirksome Squares【查表法】

The number 3025 has a remarkable quirk: if you split its decimal representation in two strings of equal length (30 and 25) and square the sum of the numbers so obtained, you obtain the original number:
(30 + 25)2 = 3025
    The problem is to determine all numbers with this property having a given even number of digits.
For example, 4-digit numbers run from 0000 to 9999. Note that leading zeroes should be taken into account. This means that 0001 which is equal to (00 + 01)2 is a quirksome number of 4 digits. The number of digits may be 2,4,6 or 8. Although maxint is only 32767 and numbers of eight digits are asked for, a well-versed programmer can keep his numbers in the range of the integers. However efficiency should be given a thought.
Input
The input of your program is a textflle containing numbers of digits (taken from 2,4,6,8), each number on a line of its own.
Output
The output is a textfile consisting of lines containing the quirksome numbers (ordered according to the input numbers and for each input number in increasing order).
Warning: Please note that the number of digits in the output is equal to the number in the corresponding input line : leading zeroes may not be suppressed.
Sample Input
2
2
Sample Output
00
01
81
00
01
81

问题链接UVA256 Quirksome Squares
问题简述:(略)
问题分析
    看代码,不解释。
程序说明:(略)
参考链接:(略)
题记:(略)

AC的C++语言程序如下:

/* UVA256 Quirksome Squares */

#include <bits/stdc++.h>

using namespace std;

const int N = 5;
const int mods[] = {0, 10, 100, 1000, 10000};
vector<int> v[N];
void init()
{
    for(int i = 0; i <= 9999; i++) {
        int i2 = i * i;
        for(int j = 0; j < N; j++)
            if(i < mods[j]) {
                int tmp = i2 / mods[j] + i2 % mods[j];
                if(tmp == i) v[j].push_back(i2);
            }
    }
}

int main()
{
    init();

    int n, m;
    while(~scanf("%d", &n)) {
        m = n >> 1;
        for(int i = 0; i < (int)v[m].size(); i++)
            printf("%0*d\n", n, v[m][i]);
    }

    return 0;
}
发布了2131 篇原创文章 · 获赞 2306 · 访问量 254万+

猜你喜欢

转载自blog.csdn.net/tigerisland45/article/details/104599125