我是靠谱客的博主 小巧画笔,最近开发中收集的这篇文章主要介绍PAT A1023(大数加倍)(18''),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

注意:①题目已经给了数字最大19位,继续使用long long 肯定超界.当使用字符串进行存储时,转换为整数要减 '0'.

        ②计算出来的值使用int型数组存储,直接输出即可

// PAT A1023.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <stdio.h>
#include <algorithm>
#include <string.h>
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
char a[30]; int b[30]; int flag[11];
fill(flag,flag+10,0);
fill(b,b+30,0);
scanf("%s",a);
int len1 = strlen(a);
if(len1 == 1 && a[0] == '0'){
printf("Non");
printf("0n");
return 0;
}
for(int i =0;i<len1;i++){
int t = a[i] - '0';
flag[t] ++;
}
bool f = false;
reverse(a,a+len1); int j = 0;
int i;
for(i = 0;i<len1;i++){
int temp = (a[i]-'0')*2 + j;
if(temp >= 10){
b[i] = temp %10;
j = 1;
}else{
b[i] = temp;
j =0;
}
}
if(j == 1){
b[i] = 1;
i++;
}
for(int u = 0;u<i;u++){
if(flag[b[u]] == 0){
f = true;
break;
}
}
if(f){
printf("Non");
}else{
printf("Yesn");
}
int len = --i;
for(;len>=0;len--){
printf("%d",b[len]);
}
printf("n");
system("pause");
return 0;
}

 

最后

以上就是小巧画笔为你收集整理的PAT A1023(大数加倍)(18'')的全部内容,希望文章能够帮你解决PAT A1023(大数加倍)(18'')所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(89)

评论列表共有 0 条评论

立即
投稿
返回
顶部