HDU 1002(AC代码)

 1 #include <stdio.h>
 2 #include <string.h>
 3 #define MAX 1009
 4 int main()
 5 {
 6     char a[MAX]={0},b[MAX]={0};
 7     int n,i,len1,len2,j=0,z=0,r=0,k=0;
 8     char *p=NULL;
 9     scanf("%d",&n);
10     if( 0<n&&n<21 ){
11         for(i=0;i<n;i++){
12             j=0;
13             z=0;
14             r=0;
15             scanf("%s",a);
16             scanf("%s",b);
17             printf("Case %d:\n",i+1);
18             printf("%s + %s = ",a,b);
19             len1=strlen(a);
20             len2=strlen(b);
21             if( len1>len2 ){
22                 b[len1]=‘\0‘;
23                 len1--;
24                 len2--;
25                 while( len2>=0 ){
26                     b[len1--]=b[len2--];
27                 }
28                 while(len1>=0){
29                     b[len1--]=‘0‘;
30                 }
31             }
32             else if( len2>len1 ){
33                 a[len2]=‘\0‘;
34                 len1--;
35                 len2--;
36                 while( len1>=0 ){
37                     a[len2--]=a[len1--];
38                 }
39                 while(len2>=0){
40                     a[len2--]=‘0‘;
41                 }
42             }
43              len1=strlen(a);
44               len2=strlen(b);
45             len1--;
46             len2--;
47             while( len1>=0 && len2>=0 )   {
48                 z= (b[len2]-‘0‘) + (a[len1]-‘0‘) + r;
49                 r=z/10;
50                 z=z-r*10;
51                 b[len2]=z+‘0‘;
52                 len1--;
53                 len2--;
54             };
55             if( r!=0 ){
56                 printf("1");
57                 printf("%s\n",b);
58             }
59             else{
60                 len2=strlen(b);
61                 while( b[k]==‘0‘&&k<len2 ){
62                     k++;
63                 }
64                 p=&b[k];
65                 printf("%s\n",p);
66             }
67             if(i!=n-1)
68                 printf("\n");
69
70         }
71     }
72     return 0;
73 }

格式很重要:

Case+空格+i+:(冒号后无空格)

a+空格+b+空格+=+空格+c(直接把+号去掉,再按空格键代替空格)

(空一行)

<<-继续上面格式->>

注意:最后一个case输完后是不需要空行的,所以会有代码

  if(i!=n-1)
      printf("\n");  //当非最后一个case时,输出一个空行

解题思路:1、数字可能太大,得用数组逐个记下来,第一个存在a,另一个存在b。2、strlen算它们各自的长度(strlen不计算‘\0‘),从数组的第strlen个开始3、相加之后要考虑是否需要进一位,需要的话把十位上数字提出来,提取出来和第strlen-1的那两个数相加。4、刚被提取个位上的数字存到长度较长的数组中,节省点空间。5、一直重复。

要注意:输入可能是00001 00002,那么你要输出3,不能是00003。输入可能是99999 99998,那么考虑进位时,因两个数组一样长,所以可能进位会填不进数组,要单独输出。输入可能是99999 1,那么也是考虑进位的问题。 输入可能是1 9999,也是进位问题,要考虑不同长度的数字的前后顺序。
时间: 2024-08-05 12:46:01

HDU 1002(AC代码)的相关文章

矩阵快速幂AC代码HDU 2035

#include <iostream> using namespace std;const int MOD = 1000;//像这样的一个常量就应该专门定义一下 int PowMod(int a, int n)//a^n%MOD { int ret = 1; while(n) { if(n & 1) ret = ret * a % MOD; //变为二进制,然后就可以专门进行分解计算,十分的方便,要求是结合位运算一同使用 a = a * a % MOD; //这里要求特别的注意,因为是

HDU 1011 Starship Troopers星河战队(AC代码)树形dp

这个没有考虑过多东西的代码也是AC了. 1 #include <iostream> 2 #include <vector> 3 #define limit 110 4 using namespace std; 5 6 vector<int> vect[limit]; 7 int n,m; 8 bool vis[limit]; 9 int bug[limit],pos[limit]; 10 int dp[limit][limit]; 11 12 int max(int a

【南阳OJ分类之大数问题】题目+AC代码汇总

声明:题目部分皆为南阳OJ题目,代码部分包含AC代码(可能不止一个)和标程. 由于大数问题用c/c++写比较麻烦,而Java的大数类又很好用,所以基本为java代码.实际上竞赛很少会考大数问题,因为竞赛是比的算法,而不是语言特性,不过很多都是大数据,数据上千万级别的,所以算法又很关键,显然那和这篇博客也没啥关系. 题目不是太难,大家和本人就权当学习或复习下Java吧O(∩_∩)O~. 该分类南阳oj地址:http://acm.nyist.edu.cn/JudgeOnline/problemset

【南阳OJ分类之语言入门】80题题目+AC代码汇总

声明: 题目部分皆为南阳OJ题目. 代码部分包含AC代码(可能不止一个)和最优代码,大部分都是本人写的,并且大部分为c代码和少部分c++代码and极少java代码,但基本都是c语言知识点,没有太多差别,可能代码有的写的比较丑,毕竟知识有限. 语言入门部分题基本都较为简单,是学习编程入门的很好练习,也是ACM的第一步,入门的最佳方法,望认真对待. 本文由csdn-jtahstu原创,转载请注明出处,欢迎志同道合的朋友一起交流学习.本人QQ:1373758426和csdn博客地址. now begi

HDU 4518 ac自动机+数位dp

吉哥系列故事--最终数 Time Limit: 500/200 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Submission(s): 304    Accepted Submission(s): 102 Problem Description 在2012年腾讯编程马拉松比赛中,吉哥解决了一道关于斐波那契的题目,这让他非常高兴,也更加燃起了它对数学特别是斐波那契数的热爱.现在,它又在思考一个关于斐波那契

抓起根本(二)(hdu 4554 叛逆的小明 hdu 1002 A + B Problem II,数字的转化(反转),大数的加法......)

数字的反转: 就是将数字倒着存下来而已.(*^__^*) 嘻嘻…… 大致思路:将数字一位一位取出来,存在一个数组里面,然后再将其变成数字,输出. 详见代码. 1 while (a) //将每位数字取出来,取完为止 2 { 3 num1[i]=a%10; //将每一个各位取出存在数组里面,实现了将数字反转 4 i++; //数组的变化 5 a/=10; 6 } 趁热打铁 例题:hdu 4554 叛逆的小明 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid

HDU 2896 AC自动机 + 细心

病毒侵袭 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 10478    Accepted Submission(s): 2724 Problem Description 当太阳的光辉逐渐被月亮遮蔽,世界失去了光明,大地迎来最黑暗的时刻....在这样的时刻,人们却异常兴奋——我们能在有生之年看到500年一遇的世界奇观,那是多么幸福的事儿

hdu 2896 AC自动机

// hdu 2896 AC自动机 // // 题目大意: // // 给你n个短串,然后给你q串长字符串,要求每个长字符串中 // 是否出现短串,出现的短串各是什么 // // 解题思路: // // AC自动机,插入单词,构建自动机,然后查询就可以了. // // 感悟: // // 哎,自己AC自动机果然刚学,还只会个模板,自动机构没构建 // 都不知道...继续加油吧~~~FIGHTING! #include <cstdio> #include <cstring> #inc

HDU 1002 A - A + B Problem II (大数问题)

原题代号:HDU 1002 原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1002 原题描述: Problem Description I have a very simple problem for you. Given two integers A and B, your job is to calculate the Sum of A + B. Input The first line of the input contains an int

hdu 2296 aC自动机+dp(得到价值最大的字符串)

Ring Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3180    Accepted Submission(s): 1033 Problem Description For the hope of a forever love, Steven is planning to send a ring to Jane with a rom