1024 Palindromic Number int_string转换 大整数相加
A number that will be the same when it is written forwards or backwards is known as a Palindromic Number. For example, 1234321 is a palindromic number. All single digit numbers are palindromic numbers.
Non-palindromic numbers can be paired with palindromic ones via a series of operations. First, the non-palindromic number is reversed and the result is added to the original number. If the result is not a palindromic number, this is repeated until it gives a palindromic number. For example, if we start from 67, we can obtain a palindromic number in 2 steps: 67 + 76 = 143, and 143 + 341 = 484.
Given any positive integer N, you are supposed to find its paired palindromic number and the number of steps taken to find it.
Input Specification:
Each input file contains one test case. Each case consists of two positive numbers N and K, where N (≤1010) is the initial numer and K (≤100) is the maximum number of steps. The numbers are separated by a space.
Output Specification:
For each test case, output two numbers, one in each line. The first number is the paired palindromic number of N, and the second number is the number of steps taken to find the palindromic number. If the palindromic number is not found after K steps, just output the number obtained at the Kth step and K instead.
# string int 互换法
- stod()
- to_string()
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
const int maxn = ; bool isPalindromic(string v){
int l=, r=v.length()-;
while(l<r){
if(v[l]!=v[r]) return false;
l++; r--;
}
return true;
} string Add(string n,string rn){
long a=stod(n);
long b=stod(rn);
return to_string(a+b);
} int main(){
string n;
int k;
cin>>n;
scanf("%d",&k);
if(isPalindromic(n)){
cout<<n<<endl;
printf("");
return ;
}
int t=;
while(t<k){
t++;
string rn=n;
reverse(rn.begin(), rn.end());
n=Add(n,rn);
if(isPalindromic(n)){
cout<<n<<endl;
printf("%d",t);
return ;
}
}
cout<<n<<endl;
printf("%d",t);
}
# 大整数相加法
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
const int maxn = ; bool isPalindromic(string v){
int l=, r=v.length()-;
while(l<r){
if(v[l]!=v[r]) return false;
l++; r--;
}
return true;
} string Add(string n,string rn){
string ans="";
int i,jinwei=;
for(i=;i<n.length();i++){
ans += ((n[i]-'')+(rn[i]-'')+jinwei)% + '';
jinwei = ((n[i]-'')+(rn[i]-'')+jinwei)/ ;
}
if(jinwei) ans += jinwei+'';
reverse(ans.begin(), ans.end());
return ans;
} int main(){
string n;
int k;
cin>>n;
scanf("%d",&k);
if(isPalindromic(n)){
cout<<n<<endl;
printf("");
return ;
}
int t=;
while(t<k){
t++;
string rn=n;
reverse(rn.begin(), rn.end());
n=Add(n,rn);
if(isPalindromic(n)){
cout<<n<<endl;
printf("%d",t);
return ;
}
}
cout<<n<<endl;
printf("%d",t);
}
1024 Palindromic Number int_string转换 大整数相加的更多相关文章
- PAT Advanced 1024 Palindromic Number (25) [数学问题-⼤整数相加]
题目 A number that will be the same when it is written forwards or backwards is known as a Palindromic ...
- HDU 1002 A + B Problem II(大整数相加)
A + B Problem II Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u De ...
- PAT 甲级 1024 Palindromic Number (25 分)(大数加法,考虑这个数一开始是不是回文串)
1024 Palindromic Number (25 分) A number that will be the same when it is written forwards or backw ...
- poj2305-Basic remains(进制转换 + 大整数取模)
进制转换 + 大整数取模一,题意: 在b进制下,求p%m,再装换成b进制输出. 其中p为b进制大数1000位以内,m为b进制数9位以内二,思路: 1,以字符串的形式输入p,m; 2,转换:字符串-&g ...
- 华为"128为大整数相加"机试题
最近正直春招,偶尔接触到了华为的这道大整数相加的测试题,在网上找了一个算法,然后自己尝试进行了优化,最后也对memmove()函数效率有了进一步把握. #include <time.h># ...
- PAT 甲级 1024 Palindromic Number
1024. Palindromic Number (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue A ...
- SOJ 1002/1003/1004 大整数相加/相乘/相除
三个题目分别考察大整数相加相乘相除运算.如果按照传统算法是取一个长数组,之后进行模拟或者FFT来进行运算.但是相对繁琐. 后来昨天的青岛区域赛网赛1001,用到了JAVA的BigDecimal,于是反 ...
- 1024 Palindromic Number
题意: 给出一个数N(N<=10^10),最多可操作K次(K<=100),每次操作为这个数和其反转之后的数相加,若得到的结果为回文数,则输出:若在K次迭代后仍然不是回文数,在输出第K次操作 ...
- PTA (Advanced Level) 1024 Palindromic Number
Palindromic Number A number that will be the same when it is written forwards or backwards is known ...
随机推荐
- Scrum Meeting 博客目录
秘制牛肉团队 Scrum Meeting 博客汇总 一.Alpha阶段 团队第一次 # scrum meeting 团队第二次 # scrum meeting 团队第三次 # scrum meetin ...
- Android Studio2.0 教程从入门到精通Windows版
系列教程 Android Studio2.0 教程从入门到精通Windows版 - 安装篇Android Studio2.0 教程从入门到精通Windows版 - 入门篇Android Studio2 ...
- ORA-00911: invalid character 包含中文报错
SQL在pl下正常执行在vs里报错ORA-00911: invalid character. 1.检查SQL末尾是否含有";" 去掉 2.sql包含中文报错 string sql ...
- centos6.5部署redmine3.2
ruby 2.1 + rails 4.2+ mysql 5.6 +centos6.5 + rvm 1.29 1.基本的软件环境 yum -y install libyaml-devel zlib-de ...
- CentOS开机自动运行自己的脚本详解
一.root权限编辑/etc/rc.d/rc.local su cd /etc/rc.d/ vi rc.local 二.在这个文件加上你要执行的脚本,全部内容如下: #!/bin/sh # # Thi ...
- tcp中delay_ack的理解
内核版本,3.10. 首先,我们需要知道,在一个sock中,维护ack的就有很多变量,多种状态: struct inet_connection_sock { .... __u8 icsk_ca_sta ...
- LeetCode OJ 102. Binary Tree Level Order Traversal
题目 Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to rig ...
- java 8 日期函数
1.Timestamp(long)转成日期 Timestamp timestamp = new Timestamp(System.currentTimeMillis()); LocalDate ...
- java DES加解密及Wrong key size错误
如下的DES加密方法会报错:Wrong key size public static String encryptDES(String source) throws Exception{ Secret ...
- HttpRunnerManager使用(一)
用例: 一.request requests---headers===>headers设置 requests---type:params===>请求参数设置,URL参数(get) requ ...