基德KID.1412 发表于 2013-1-26 13:33:33

【水题】USACO Palindromic Squares

进入USACO要注册才能看题: http://train.usaco.org/usacogate

题目:【翻译版、是别处的网站】http://www.wzoi.org/usaco/12%5C501.asp

SAMPLE INPUT (file palsquare.in)
10
SAMPLE OUTPUT (file palsquare.out)
1 1
2 4
3 9
11 121
22 484
26 676
101 10201
111 12321
121 14641
202 40804
212 44944
264 69696    //结果中2个数都要以所给进制输出


水题……但是由于细节问题没能一次A……无奈

/*ID: 1006100071PROG: palsquareLANG: C++*/#include <iostream>#include <fstream>#include <algorithm>#include <string>#include <set>//#include <map>#include <queue>#include <utility>#include <iomanip>#include <stack>#include <list>#include <vector>#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <ctime>#include <ctype.h>using namespace std;char num[] = {"0123456789ABCDEFGHIJKLMNO"};inline bool ispalind (char *s, int len)   //判断s是否回文{int i;for (i = 0; i < len / 2; i++)if (s != s)return false;return true;}void my_itoa (int a, char *s, int b)//把a转成b进制放到s中,n为0时失效,根据题意没有0的情况!{int k = 0, i;char p;while (a){p = num;a /= b;}p = 0;for (i = 0; i < k; i++)    //反转字符串s = p;s = 0;//cout << s << endl;}int main(){/*freopen ("palsquare.in", "r", stdin);freopen ("palsquare.out", "w", stdout);*/char s1, s;int n, len, b;while (scanf ("%d", &b) != EOF){for (n = 1; n <= 300; n++){my_itoa (n * n, s, b);len = strlen(s);if (ispalind (s, len)){my_itoa (n, s1, b);printf ("%s %s\n", s1, s);}}}return 0;}
页: [1]
查看完整版本: 【水题】USACO Palindromic Squares