USACO Palindromic Squares
来源:互联网 发布:超级大乐透数学算法 编辑:程序博客网 时间:2024/05/29 12:47
【题意】找出1到300的数中其平方在b进制下是回文的数,并打印这些数及其平方在b进制下的表示
【分析】
数比较小,直接搜索再验证,验证就写个进制转换。
又作死了,审题时没看见说枚举的数也要用b进制,弄得直接WA了2次。
【代码】
/*
{
ID:y2007031
PROG:palsquare
LANG:C++
}
*/
#include <cstdio>
#include <cstring>
#include <cstdlib>
using namespace std;
const char c[21]="0123456789ABCDEFGHIJ";//{'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J'};
int base,change[30],swap[30];
void get(int k)
{
change[0]=0;
for (int i=k*k;i;i/=base) change[++change[0]]=i%base;
for (int i=1;i<=change[0];i++) if (change[i]^change[change[0]+1-i]) return;
swap[0]=0;
for (int i=k;i;i/=base) swap[++swap[0]]=i%base;
for (int i=swap[0];i;i--) printf("%c",c[swap[i]]);
printf(" ");
for (int i=change[0];i;i--) printf("%c",c[change[i]]);
printf("\n");
}
int main(void)
{
freopen("palsquare.in","r",stdin);
freopen("palsquare.out","w",stdout);
scanf("%d",&base);
for (int i=1;i<=300;i++) get(i);
return 0;
}
【总结】
①字符串都可以这样存:const char s[8]="12345678",不用这样存:const char s[8]={'1','2','3','4','5','6','7','8'}
②进制转换的相关内容
- Palindromic Squares(USACO)
- USACO 1.2-Palindromic Squares
- usaco 1.2:Palindromic Squares
- [USACO] Palindromic Squares
- usaco Palindromic Squares
- USACO 1.2 Palindromic Squares
- USACO Palindromic Squares
- USACO 1.2 Palindromic Squares
- usaco Palindromic Squares
- [USACO]Palindromic Squares
- Usaco:Palindromic Squares
- usaco 1.2 Palindromic Squares
- USACO Palindromic Squares
- USACO Palindromic Squares
- Palindromic Squares (USACO)
- USACO Palindromic Squares
- USACO Palindromic Squares
- usaco Palindromic Squares
- tomcat如何配置环境变量
- USACO Transformations
- 第一次
- USACO Name That Number
- Spring事务管理
- USACO Palindromic Squares
- USACO Dual Palindromes
- 深入浅出Android Support Annotations
- 计算机发展史
- linux网络设置
- Linux内核的硬件相关性
- 电商概论上课笔记-作业二
- 动态规划学习系列——划分DP(一)
- hdu 5037 Frog