palsquare-各进制回文数<uscao>1.2

the reason of failure:1、没考虑输出的每一行的两个值都已经按进制转换了.

thinking:把输入的值转换为各种进制然后判断其是否为回文数,

题目:

★Palindromic Squares 回文平方数
回文数是指从左向右念和从右像做念都一样的数.如 12321 就是一个典型的回文数.
给定一个进制 B(2<=B<=20 十进制),输出所有的大于等于 1 小于等于 300 且它的平方用 B 进制表示
时是回文数的数.用’A’,’B’……表示 10,11 等等.
PROGRAM NAME: palsquare
INPUT FORMAT
共一行,一个单独的整数 B(B 用十进制表示).
SAMPLE INPUT (file palsquare.in)
10
OUTPUT FORMAT
每行两个数字,第二个数是第一个数的平方,且第二个数是回文数.(注意:这两个数都应该在 B 那个
进制下)
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

代码:

/*  
PROG: palsquare 
LANG: C++     
ID: me     
*/  
#include <bits/stdc++.h>
using namespace std;
int main(){
	freopen("palsquare.in","r",stdin);
	freopen("palsquare.out","w",stdout);
	char result[2000];
	char result2[500];
	int x,div,f1,f2,i,mod1,f3;
	cin >> x;
	int mod,j,t;
	for(j=1;j<=300;j++){
		memset(result,0,sizeof(result));
		memset(result2,0,sizeof(result2));
		div=pow(j,2);
		t=j;
		f2=0;
		f1=0;
		f3=0;
		do{
		mod1=t%x;
		t=t/x;
		if(mod1<10)
		result2[++f3]=mod1+48;
		else
		result2[++f3]=mod1+55;
	}while(t);
	do{
		mod=div%x;
		div=div/x;
		if(mod<10)
		result[++f1]=mod+48;
		else
		result[++f1]=mod+55;
	}while(div);
	for(i=1;i<=f1/2;i++)
	if(result[i]!=result[f1-i+1])
	f2=1;
	//cout << f2 << " ";
	if(f2==0){
	//cout << "right" << " ";
	for(;f3>0;f3--)
	cout << result2[f3];
	cout << " ";
	for(;f1>0;f1--)
	cout << result[f1];
	cout << endl;
}
}
return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值