UVA 424 (13.08.02)
Integer Inquiry |
One of the first users of BIT's new supercomputer was Chip Diller. Heextended his explorationof powers of 3 to go from 0 to 333 and he explored taking various sumsof those numbers.
``This supercomputer is great,'' remarked Chip. ``I only wish Timothy werehere to see theseresults.'' (Chip moved to a new apartment, once one became available onthe third floor of theLemon Sky apartments on Third Street.)
Input
The input will consist of at most 100 lines of text, each of whichcontains a single VeryLongInteger.Each VeryLongInteger will be 100 or fewer characters in length, and willonly contain digits (no VeryLongInteger will be negative).
The final input line will contain a single zero on a line by itself.
Output
Your program should output the sum of the VeryLongIntegers given in the input.
Sample Input
123456789012345678901234567890
123456789012345678901234567890
123456789012345678901234567890
0
Sample Output
370370367037037036703703703670
题意: 大数相加~ 做法: 看AC的代码, 顺带注释, 容易懂的~ 另注:写了两份, 第一份AC之后发现代码不完美, 999999999999999 + 1计算不来 虽然AC了, 但是是由于黑盒子数据太弱了, 于是又重写了一份, 终于可计算999999999999999 + 1了 原因出在: 一个是每次加完都判断进位, 导致没有考虑到进位的连锁反应, 如999999999999999 + 1, 会一直进位 所以, 后来改成了全部累加完后, 统一进行进位, 就无懈可击了~ AC代码(无懈可击版, 样例999999999999999 + 1可行):
#include<stdio.h>
#include<string.h> int ans[1001]; int main() {
char num[101];
char ch;
int len;
//初始化答案数组~
for(int i = 0; i < 1001; i++)
ans[i] = 0; while(gets(num) != NULL) {
//结束并输出的标志
if(num[0] == '0')
break;
len = strlen(num);
//num数组倒序
for(int i = 0; i < len/2; i++) {
ch = num[i];
num[i] = num[len - 1 - i];
num[len - 1 - i] = ch;
}
//先累加~
for(int i = 0; i < len; i++)
ans[i] += (num[i] - '0');
}
//跳出后, 把累加的数值进行处理, 该进位的进~
for(int i = 0; i <= 999; i++) {
ans[i+1] += ans[i] / 10;
ans[i] = ans[i] % 10;
}
//从末尾开始找, 找到第一个非零数位置
int pos;
for(int i = 1000; i >= 0; i--) {
if(ans[i] != 0) {
pos = i;
break;
}
}
//从该位置倒序输出~
for(int i = pos; i >= 0; i--)
printf("%d", ans[i]);
printf("\n");
return 0;
}
AC代码(有漏洞版, 很久以前写的, 比较搓, 样例999999999999999 + 1不可通过)
#include <stdio.h>
#include <string.h> int main(){ int i, t, l, n;
int Sum, sum[1001];
char add[101];
for (i = 0; i < 1001; i++)
sum[i] = 0;
while (gets(add)){ if (strcmp(add,"0") == 0)
break; l = strlen(add); //add字符数组的倒序:
for (i = 0; i < l/2; i++){
t = add[i];
add[i] = add[l-i-1];
add[l-i-1] = t;
}
//累加到sum数组:
for (i = 0; i < l; i++){
Sum = add[i]-'0' + sum[i];
sum[i+1] = Sum / 10 + sum[i+1];
sum[i] = Sum % 10;
}
} //处理一:对sum数组从最后面开始寻找第一个非零数,标记
for (i = 1000; i >= 0; i--){
if (sum[i] != 0){
n = i;
break;
}
} //处理二:倒序输出~(yes)
for (i = n; i >= 0; i--)
printf("%d",sum[i]);
printf("\n");
return 0;
}
UVA 424 (13.08.02)的更多相关文章
- UVA 465 (13.08.02)
Overflow Write a program that reads an expression consisting of twonon-negative integer and an ope ...
- UVA 10494 (13.08.02)
点此连接到UVA10494 思路: 采取一种, 边取余边取整的方法, 让这题变的简单许多~ AC代码: #include<stdio.h> #include<string.h> ...
- UVA 10106 (13.08.02)
Product The Problem The problem is to multiply two integers X, Y. (0<=X,Y<10250) The Input T ...
- UVA 10194 (13.08.05)
:W Problem A: Football (aka Soccer) The Problem Football the most popular sport in the world (ameri ...
- UVA 253 (13.08.06)
Cube painting We have a machine for painting cubes. It is supplied withthree different colors: blu ...
- UVA 573 (13.08.06)
The Snail A snail is at the bottom of a 6-foot well and wants to climb to the top.The snail can cl ...
- UVA 10499 (13.08.06)
Problem H The Land of Justice Input: standard input Output: standard output Time Limit: 4 seconds In ...
- UVA 10025 (13.08.06)
The ? 1 ? 2 ? ... ? n = k problem Theproblem Given the following formula, one can set operators '+ ...
- UVA 536 (13.08.17)
Tree Recovery Little Valentine liked playing with binary trees very much. Her favoritegame was con ...
随机推荐
- GitHub中"watch" "star" "fork"三个按钮干什么用的?
总结下一般使用:1.想拷贝别人项目到自己帐号下就fork一下.2.持续关注别人项目更新就star一下3.watch是设置接收邮件提醒的.具体提醒有Issues and their commentsPu ...
- 冒泡排序--c#
//冒泡排序 Console.WriteLine("请输入一个程序的数值"); int[] array = { 111, 2, 5, 32, 321 }; int temp = 0 ...
- CentOS 7.0 重置root密码
步骤一,开机时随便按下键盘,进入以下菜单 步骤二: 选择第一项,按e键进行修改 步骤三,定位到 ro( linux 16 or linuxefi ) 步骤四:把ro改成 “rw init=/sysro ...
- Centos 6.5 RedHat 6 安装mysql
所需文件列表, 这些文件在安装光盘内的Packages文件夹内, 也可以到MySQL官方网站下载其他版本(需要FQ). 将这些文件放在/usr/loca/src文件夹: -.el6.x86_64.rp ...
- grub2 使用memdisk工具 启动任意iso
root@zhanghua-Inspiron-:/home/zhanghua# df -h 文件系统 容量 已用 可用 已用% 挂载点 /dev/sda6 60G 12G 46G 21% / none ...
- 调整ListBox控件的行间距及设置文本格式
首先要将该控件的DrawMode属性为OwnerDrawVariable 添加DrawItem重绘事件:private void listBox1_DrawItem(object sender, Dr ...
- BenchmarkDotNet
.NET Core性能测试组件BenchmarkDotNet 支持.NET Framework Mono .NET Core 超强性能测试组件BenchmarkDotNet 支持Full .NET F ...
- linux下安装MySQL5.6记录
把之前装的mysql卸载了,准备重新用代码包装一遍,问了一下公司的DBA,他推荐给我mysql-5.6.16版本,说这个版本比较稳定. 按照网上的教程安装,结果就少文件,我还在找原因的时候,同事来找我 ...
- 转:阿里开源Mysql分布式中间件:Cobar
原文来自于:http://hualong.iteye.com/blog/2102798 这几天研究了下Cobar, Cobar是阿里巴巴研发的关系型数据的分布式处理系统(Amoeba的升级版,该产品成 ...
- bzoj 1031: [JSOI2007]字符加密Cipher 後綴數組模板題
1031: [JSOI2007]字符加密Cipher Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3157 Solved: 1233[Submit ...