【PAT 】1024.Palindromic Number (25) 字符操作+大数相加
来源:互联网 发布:mac怎么打出@ 编辑:程序博客网 时间:2024/06/05 14:48
题目链接:http://www.patest.cn/contests/pat-a-practise/1024
第一次,只过了部分数据,数据长度超过long long
unsigned int 0~4294967295
int 2147483648~2147483647
unsigned long 0~4294967295
long 2147483648~2147483647
long long的最大值:9223372036854775807
long long的最小值:-9223372036854775808
unsigned long long的最大值:1844674407370955161
__int64的最大值:9223372036854775807
__int64的最小值:-9223372036854775808
unsigned __int64的最大值:18446744073709551615
#include<string.h>#include<stdio.h>#include<math.h>typedef long long LL;//递归判断回文串bool Palindromic(int low, int high, char *str, int len){if (len == 0 || len == 1)return true;if (str[low] != str[high])return false;return Palindromic(low + 1, high - 1, str, len - 2);}//LL型转字符串char *LLtoa(LL num){char str[30];int i = 0, j = 0;char temp[20];do{temp[i] = num % 10 + '0';num /= 10;i++;} while (num>0); temp[i] = '\0';i--;while (i >= 0)//反向操作{str[j] = temp[i];j++;i--;}str[j] = '\0';return str;}//字符串转LLLL atoLL(char *str){LL value = 0;while (*str >= '0' && *str <= '9'){value *= 10;value += *str - '0';str++;}return value;}//LL反转LL revNum(LL num){int i = 0, j = 0;char temp[30]="";do{temp[i] = num % 10 + '0';num /= 10;i++;} while (num>0);temp[i] = '\0';return atoLL(temp);}int main1024_1(){LL N,T;int K, len;char str[30];bool flag = false;scanf("%lld %d",&N,&K);T = N;for (int i = 0; i < K; i++){memset(str, 0, sizeof(str));strcpy(str, LLtoa(T));len = strlen(str);if (Palindromic(0,len-1,str,len)){printf("%lld\n%d\n", T,i);flag = true;break;}else{T = T + revNum(T);}}if (!flag){printf("%lld\n%d\n", T, K);}scanf("%d", &K);return 0; }
第二次,字符操作,大数相加,位数相同直接首尾相加
#include<stdio.h>#include<string.h>#include<iostream>#include<algorithm>#include<stdlib.h>using namespace std;#define maxN 200//递归判断回文串bool Palindromic(int low, int high, char *str, int len){ if (len == 0 || len == 1) return true; if (str[low] != str[high]) return false; return Palindromic(low + 1, high - 1, str, len - 2);}bool solve(char *sl){ int len=strlen(sl); int i,j,t,p=0; char res[maxN] = { 0 }; if (Palindromic(0,len-1,sl,len)) return true; else { for (i = len - 1, j = maxN - 1; i >= 0; i--)//首尾相加 { t = (sl[i] - '0') + (sl[len - i - 1] - '0') + p; p = t / 10; res[--j] = t % 10 + '0'; } if (p != 0) { res[--j] = p + '0'; } strcpy(sl, res + j); return false; }}int main(){ int i,k; char str[maxN]; scanf("%s %d", str, &k); for (i = 0; i < k; i++) { if (solve(str)) break; } printf("%s\n%d\n",str,i); //scanf("%d", &k);}
0 0
- 【PAT 】1024.Palindromic Number (25) 字符操作+大数相加
- PAT (Advanced Level) 1024. Palindromic Number (25) 字符串反转相加
- PAT 1024. Palindromic Number (25)(字符串对称,相加)
- 【PAT】1024. Palindromic Number 回文反转相加
- 【PAT】1024. Palindromic Number (25)
- PAT 1024. Palindromic Number (25)
- 【PAT】1024. Palindromic Number (25)
- PAT 1024. Palindromic Number (25)
- PAT 1024. Palindromic Number (25)
- pat 1024. Palindromic Number (25)
- PAT 1024. Palindromic Number (25)
- 1024. Palindromic Number (25)-PAT甲级真题(大整数相加)
- 1024. Palindromic Number (25)【简易大数加法+回文】——PAT (Advanced Level) Practise
- PAT 1024. Palindromic Number
- PAT 1024. Palindromic Number
- PAT 1024. Palindromic Number
- 【PAT】1024. Palindromic Number
- 大数运算-PAT A1024.Palindromic Number
- Android Framework是怎么启动的?
- 漫谈人工智能读后感
- PHP中include和require的区别详解
- 安卓学习记录-java-day5
- 【悟】发版之夜
- 【PAT 】1024.Palindromic Number (25) 字符操作+大数相加
- android解决方法数超过65536问题
- 重新开始打代码。
- Composer安装详解
- scala笔记四
- 在Word中写出像LaTeX一样的公式
- 利用 ViewPager 等,实现带小圆球的图片滑动,并且只有第一次安装app时才出现欢迎界面(图片)
- 工具类生成mybatis的Mapper类和xml文件以及实体
- 解决Windwos Server 2008缓存耗用大量物理内存