USACO Palindromic Squares 回文平方数

原题自行百度。
这个题其实没啥难的,数据也很水,直接暴力即可。
唯一的关键在于转换进制,这个貌似跟数学联系比较紧。十进制数转换为n进制,方法就是原数除以进制,记下余数和商,用商接着除。直到商是零,然后把余数倒着写即可。
自己可以动手模拟一下,想一想,为什么?
十进制下 满十进一,n进制满n进一。
其实最初除一下得到的商可以看做是向下一位进了多少个“一”,那余数自然是当前位上的数字了。然后用商接着除便是在高一位上接着看能向下一位进多少个“一”,而余数同样是当前位数字,以此类推,进制转换便是 除以进制,余数倒写 了!!!
然后要注意超过十进制时每一位可能会有两位数,按题目规定要用A,B,C之类来表示,输出时候转换一下即可。
比较是否回文时可以把整个数拆开存在数组里来比较。
好了,代码

/*
ID:herekig1
PROG:palsquare
LANG:C++
*/
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;

int b;int chg[90010],f[90010],cnt,cntb,yuan[310],chy[310];

void jinb(int x){
	memset(yuan,0,sizeof(yuan));
	memset(chy,0,sizeof(chy));cntb=0;
	do{
		chy[++cntb]=x%b;
		x/=b;
	}while(x!=0);
	for(int i=1;i<=cntb;++i){
		yuan[i]=chy[cntb+1-i
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值