Palindromic Squares (USACO)
2013-04-16 21:11
148 查看
原题地址
Palindromes are numbers that read the same forwards as backwards. The number 12321 is a typical palindrome.
Given a number base B (2 <= B <= 20 base 10), print all the integers N (1 <= N <= 300 base 10) such that the square of N is palindromic when expressed in base B; also print the value of that palindromic square.
Use the letters 'A', 'B', and so on to represent the digits 10, 11, and so on.
Print both the number and its square in base B.
Palindromes are numbers that read the same forwards as backwards. The number 12321 is a typical palindrome.
Given a number base B (2 <= B <= 20 base 10), print all the integers N (1 <= N <= 300 base 10) such that the square of N is palindromic when expressed in base B; also print the value of that palindromic square.
Use the letters 'A', 'B', and so on to represent the digits 10, 11, and so on.
Print both the number and its square in base B.
PROGRAM NAME: palsquare
INPUT FORMAT
A single line with B, the base (specified in base 10).SAMPLE INPUT (file palsquare.in)
10
OUTPUT FORMAT
Lines with two integers represented in base B. The first integer is the number whose square is palindromic; the second integer is the square itself.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
//这个是我的代码,USACO的题目都比较有技巧性 /* ID : liuming9 LANG : C++ TASK: palsquare */ #include <cstdio> #include <algorithm> using namespace std; int n, size; char s[100], str[10]; void palsquare(int a){ int r; int x = a * a; size = 0; //把平方转化为n进制 while(x){ r = x % n; x /= n; if(0 <= r && r <= 9) s[size++] = r + '0'; else s[size++] = r + 'A' - 10; } s[size] = 0; for(int i = 0; i < size / 2; i++) if(s[i] != s[size - 1 - i]) return; size = 0; //把原数字转化为n进制 while(a){ r = a % n; a /= n; if(0 <= r && r <= 9) str[size++] = r + '0'; else str[size++] = r + 'A' - 10; } str[size] = 0; //把原数字转化的n进制逆置 for(int i = 0; i < size / 2; i++) swap(str[i], str[size - i - 1]); printf("%s %s\n", str, s); } int main(){ freopen("palsquare.in", "r", stdin); freopen("palsquare.out", "w", stdout); scanf("%d", &n); for(int i = 1; i <= 300; i++){ palsquare(i); } return 0; }
相关文章推荐
- USACO 2012 Mar Haybale Restacking 重排干草
- BZOJ 1724: [Usaco2006 Nov]Fence Repair 切割木板
- 洛谷——P2737 [USACO4.1]麦香牛块Beef McNuggets
- USACO 1.1 Your Ride Is Here (ride)
- Prime Palidromes_回文素数_usaco1.5_枚举?
- [USACO-Training 1.3]Wormholes
- USACO Section 1.4 Arithmetic Progressions
- [USACO 6.1.3] Cow XOR
- 【USACO题库】3.1.6 Stamps邮票
- USACO 2.1 Ordered Fractions (frac1)
- USACO 2016 February Contest, Bronze Problem 3. Load Balancing
- 洛谷2915 usaco08nov 奶牛混合起来 Mixed Up Cows
- USACO 2.3 Controlling Companies (concom)
- bzoj 1645: [Usaco2007 Open]City Horizon 城市地平线(离散化+扫描线)
- [Usaco2007 Oct] Super Paintball超级弹珠
- USACO 3.1 Score Inflation (inflate)
- 【USACO】Transformations
- bzoj 2199: [Usaco2011 Jan]奶牛议会
- USACO 3.2 Magic Squares (msquare)
- 【USACO题库】1.1.3 Friday the Thirteenth黑色星期五