PAT甲题题解-1024. Palindromic Number (25)-大数运算
大数据加法
给一个数num和最大迭代数k
每次num=num+num的倒序,判断此时的num是否是回文数字,是则输出此时的数字和迭代次数
如果k次结束还没找到回文数字,输出此时的数字和k
如果num一开始是回文数字,那么直接输出num和0即可。
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string.h>
#include <string>
using namespace std;
const int maxn=;
struct Bign{
int len,num[maxn]; // 这里num[0]是最低位,num[len-1]是最高位
Bign(){
memset(num,,sizeof(num));
len=;
}
Bign(int val){
*this=val;
}
Bign(const char*val){
*this=val;
}
//以int型赋值
Bign operator=(int val){
char s[maxn];
sprintf(s,"%d",val);
*this=s; //字符串赋值
return *this;
}
//以字符串赋值
Bign operator=(const char*val){
len=strlen(val);
for(int i=;i<len;i++){
num[i]=val[len--i]-'';
}
return *this;
}
//去掉前导0
void clean(){
while(len>&&!num[len-]){
len--;
}
}
//转化为字符串
string tostr(){
string res="";
clean();
for(int i=;i<len;i++){
res=(char)(num[i]+'')+res;
}
if(res=="")
return "";
return res;
}
//重载+
Bign operator+(const Bign& b)const{
Bign c;
c.len=;
for(int i=,g=;g||i<max(len,b.len);i++){
int x=g;
if(i<len)
x+=num[i];
if(i<b.len)
x+=b.num[i];
c.num[c.len++]=x%;
g=x/;
}
return c;
}
//取翻转后的数
Bign toReverse(){
clean();
Bign c;
c.len=len;
for(int i=;i<len;i++){
c.num[i]=num[len--i];
}
return c;
} };
//判断是否是回文数字
bool isPal(Bign s){
int l=,r=s.len-;
while(l<=r){
if(s.num[l]!=s.num[r])
return false;
l++;
r--;
}
return true;
}
int main()
{
char s[];
int k;
scanf("%s %d",s,&k);
Bign bign=s;
if(isPal(bign)){
printf("%s\n%d\n",s,);
}
else{
for(int i=;i<=k;i++){
//cout<<"bign:"<<bign.tostr()<<" bign Reverse:"<<bign.toReverse().tostr()<<endl;
bign=bign+bign.toReverse();
//cout<<" "<<bign.tostr()<<endl;
if(isPal(bign) || i==k){
string ans=bign.tostr();
cout<<ans<<endl<<i<<endl;
break;
}
} }
return ;
}
PAT甲题题解-1024. Palindromic Number (25)-大数运算的更多相关文章
- PAT甲题题解-1117. Eddington Number(25)-(大么个大水题~)
		如题,大水题...贴个代码完事,就这么任性~~ #include <iostream> #include <cstdio> #include <algorithm> ... 
- PAT甲题题解-1051. Pop Sequence (25)-堆栈
		将1~n压入最多为m元素的栈 给出k个出栈序列,问你是否能够实现. 能输出YES 否则NO 模拟一遍即可,水题. #include <iostream> #include <cstd ... 
- PAT甲题题解-1059. Prime Factors (25)-素数筛选法
		用素数筛选法即可. 范围long int,其实大小范围和int一样,一开始以为是指long long,想这就麻烦了该怎么弄. 而现在其实就是int的范围,那难度档次就不一样了,瞬间变成水题一枚,因为i ... 
- PAT甲题题解-1101. Quick Sort (25)-大水题
		快速排序有一个特点,就是在排序过程中,我们会从序列找一个pivot,它前面的都小于它,它后面的都大于它.题目给你n个数的序列,让你找出适合这个序列的pivot有多少个并且输出来. 大水题,正循环和倒着 ... 
- PAT甲题题解-1130. Infix Expression (25)-中序遍历
		博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6789828.html特别不喜欢那些随便转载别人的原创文章又不给 ... 
- PAT甲题题解-1129. Recommendation System (25)-排序
		博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6789819.html特别不喜欢那些随便转载别人的原创文章又不给 ... 
- PAT甲题题解-1016. Phone Bills (25)-模拟、排序
		博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6789229.html特别不喜欢那些随便转载别人的原创文章又不给 ... 
- PAT甲题题解-1021. Deepest Root (25)-dfs+并查集
		dfs求最大层数并查集求连通个数 #include <iostream> #include <cstdio> #include <algorithm> #inclu ... 
- PAT甲题题解-1028. List Sorting (25)-水排序
		#include <iostream> #include <cstdio> #include <algorithm> #include <string.h&g ... 
随机推荐
- openlayer3 基础学习一创建&显示地图
			<!doctype html> <html lang="en"> <head> <link rel="stylesheet&qu ... 
- DevExpress06、Popup Menus、RadialMenu、XtraTabControl、SplitContainerControl、GroupControl
			Popup Menus 弹出菜单 使用弹出菜单(popup menus),我们可以在 控件上 显示 上下文选项 或 命令. 弹出菜单是一个显示了特定项的窗体,用户可以选择这些项以执行 ... 
- [python] 私有变量和私有方法
			1.在Python中要想定义的方法或者变量只在类内部使用不被外部调用,可以在方法和变量前面加 两个 下划线 #-*- coding:utf-8 -*- class A(object): name = ... 
- (二十)ArcGIS JS 加载WMTS服务(超图示例)
			前言 在前一篇中说到我们可以通过加载WMS服务解决用ArcGIS API加载超图发布的服务,但是WMS服务在加载效率上是低于切片服务的,加上超图的IServer,无力吐槽,所以,在加载速度的要求下,切 ... 
- JQUERY方法给TABLE动态增加行
			比如设置table的id为tabvar trHTML = "<tr><td>...</td></tr>"$("#tab&q ... 
- 【转】form data和request payload的区别
			HTML <form> 标签的 enctype 属性 在下面的例子中,表单数据会在未编码的情况下进行发送: <form action="form_action.asp&qu ... 
- linux 的常用命令---------第二阶段
			vim编辑器 vim 文件名(首先进入命令模式) :(进行编辑文件内容) → 按 i 键进入插入模式,可以写内容啦. ↓ 按 Esc 键,进入命令模式 ↓ 按 shift + : 键,进入末行模式 ... 
- 向jupyter notebook加入Anaconda3中已添加的虚拟环境kernel
			# jupyter notebook添加Anaconda虚拟环境的kernel # 开启虚拟环境 (base) C:\Users\jiangshan>activate tensorflow # ... 
- Docker学习3-CentOS安装Docker
			CentOS安装:Docker-ce ( Docker Community Edition ) 第一步:$ sudo yum install -y yum-utils device-mapper-pe ... 
- (.DS_Store)避免多人提交代码到GitHub上起冲突
			在多人合作的项目里,git pull origin master执行完之后出现以下问题: Auto-merging .DS_Store CONFLICT (content): Merge confli ... 
