HDU - 5186 - zhx's submissions (大数高精度)
来源:互联网 发布:蓝桥杯c语言试题 编辑:程序博客网 时间:2024/05/20 11:21
zhx's submissions
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 540 Accepted Submission(s): 146
Problem Description
As one of the most powerful brushes, zhx submits a lot of code on many oj and most of them got AC.
One day, zhx wants to count how many submissions he made onn ojs. He knows that on the ith oj, he made ai submissions. And what you should do is to add them up.
To make the problem more complex, zhx gives youn B−base numbers and you should also return a B−base number to him.
What's more, zhx is so naive that he doesn't carry a number while adding. That means, his answer to5+6 in 10−base is 1 . And he also asked you to calculate in his way.
One day, zhx wants to count how many submissions he made on
To make the problem more complex, zhx gives you
What's more, zhx is so naive that he doesn't carry a number while adding. That means, his answer to
Input
Multiply test cases(less than 1000 ). Seek EOF as the end of the file.
For each test, there are two integersn and B separated by a space. (1≤n≤100 , 2≤B≤36 )
Then come n lines. In each line there is aB−base number(may contain leading zeros). The digits are from 0 to 9 then from a to z (lowercase). The length of a number will not execeed 200.
For each test, there are two integers
Then come n lines. In each line there is a
Output
For each test case, output a single line indicating the answer in B−base (no leading zero).
Sample Input
2 3221 42333 16abbccd
Sample Output
123314
Source
BestCoder Round #33
思路:就是不进位的大数相加啦,要注意当结果为0时输出一个0,之前我还做过一个差不多的,上次注意到了,,这次居然没注意到o(╯□╰)o.........
疑问:为何运行时间900多ms,而且还可能会T,把cstdio改为stdio.h时间就降下来了,直接变为100多ms,害的我还检查半天。。。但是这是为什么??????
搞了半天我发现使用g++环境提交的没过,而用c++环境就过啦(以后再HDU做题还是用c++环境吧,醉啦)
据说g++用scanf因为输入太慢而要开挂(难道和cin减速一个性质??),,,,貌似是这样的,以后再试试
void gn(int &x){ char c;while((c=getchar())<'0'||c>'9');x=c-'0'; while((c=getchar())>='0'&&c<='9')x=x*10+c-'0';}
AC代码①(100+ms,g++环境):
#include <stdio.h>#include <cstring>#include <iostream>#include <algorithm>#include <cmath> using namespace std;char ans[205];char t[205];void fun(char ans[], char t[]) { int len = strlen(t); for(int i = 0; i < len; i++) { ans[i] = t[len - 1 - i]; }}void swap(char t[]) { int len = strlen(t); for(int i = 0; i < len / 2; i++) { char m = t[i]; t[i] = t[len - 1 - i]; t[len - 1 - i] = m; }}void add(char ans[], char t[], int B) { int t1, t2, t3; int len = strlen(t); for(int i = 0; i < len; i++) { if(ans[i] <= 'z' && ans[i] >= 'a') t1 = (int)(ans[i] - 'a' + 10); else t1 = ans[i] - '0'; if(t[i] <= 'z' && t[i] >= 'a') t2 = (int)(t[i] - 'a' + 10); else t2 = t[i] - '0'; t3 = (t1 + t2) % B; if(t3 >= 10) ans[i] = (char)(t3 - 10 + 'a'); else ans[i] = (char)(t3 + '0'); }}void print(char ans[]) { int flag = 0, p; for(int i = 204; i >= 0; i--) { if(ans[i] != '0') { printf("%c", ans[i]); flag = 1; } else if(ans[i] == '0' && flag) printf("0"); } if(flag == 0) printf("0"); printf("\n");}int main() { int n, B; while(scanf("%d %d", &n, &B) != EOF) { for(int i = 0; i< 205; i++) ans[i] = '0'; scanf("%s", t); fun(ans, t); for(int i = 0; i < n-1; i++) { scanf("%s", t); swap(t); add(ans, t, B); } print(ans); } return 0;}
代码②(900+ms or TLE,g++环境):
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <cmath> using namespace std;char ans[205];char t[205];void fun(char ans[], char t[]) { int len = strlen(t); for(int i = 0; i < len; i++) { ans[i] = t[len - 1 - i]; }}void swap(char t[]) { int len = strlen(t); for(int i = 0; i < len / 2; i++) { char m = t[i]; t[i] = t[len - 1 - i]; t[len - 1 - i] = m; }}void add(char ans[], char t[], int B) { int t1, t2, t3; int len = strlen(t); for(int i = 0; i < len; i++) { if(ans[i] <= 'z' && ans[i] >= 'a') t1 = (int)(ans[i] - 'a' + 10); else t1 = ans[i] - '0'; if(t[i] <= 'z' && t[i] >= 'a') t2 = (int)(t[i] - 'a' + 10); else t2 = t[i] - '0'; t3 = (t1 + t2) % B; if(t3 >= 10) ans[i] = (char)(t3 - 10 + 'a'); else ans[i] = (char)(t3 + '0'); }}void print(char ans[]) { int flag = 0, p; for(int i = 204; i >= 0; i--) { if(ans[i] != '0') { printf("%c", ans[i]); flag = 1; } else if(ans[i] == '0' && flag) printf("0"); } if(flag == 0) printf("0"); printf("\n");}int main() { int n, B; while(scanf("%d %d", &n, &B) != EOF) { for(int i = 0; i< 205; i++) ans[i] = '0'; scanf("%s", t); fun(ans, t); for(int i = 0; i < n-1; i++) { scanf("%s", t); swap(t); add(ans, t, B); } print(ans); } return 0;}
AC代码③:
#include <stdio.h>#include <string.h>#include <algorithm>using namespace std;#define maxn 205char tmp[maxn][maxn], ans[maxn][maxn], ch[50];int to[maxn];void init() {memset(ch, 0, sizeof(ch));memset(to, 0, sizeof(to));for(int i = 0; i <= 35; i++) {if(i <= 9) ch[i] = i + '0', to[i + '0'] = i;else ch[i] = i - 10 + 'a', to[i - 10 + 'a'] = i;}}int main() {int n, B;init();while(~scanf("%d %d", &n, &B)) {memset(ans, 0, sizeof(ans));memset(tmp, 0, sizeof(tmp));for(int i = 1; i <= n; i++) {scanf("%s", tmp[i]);int len = strlen(tmp[i]);for(int j = 0; j < len; j++) {ans[i][j] = tmp[i][len-1-j];}}int flag = 0;for(int i = maxn - 1; i >= 0; i--) {int t = 0;for(int j = 1; j <= n; j++) {t += to[ans[j][i]];}t %= B;if(t) flag = 1;if(flag) printf("%c", ch[t]);}if(!flag) printf("0");printf("\n");}return 0;}
2 0
- HDU - 5186 - zhx's submissions (大数高精度)
- hdu 5186 zhx's submissions(模拟)
- hdu 5186 zhx's submissions
- HDU - 5186 zhx's submissions
- hdu 5186 zhx's submissions
- HDU-5186-zhx's submissions(Java+简单模拟)
- HDU 5186 zhx's submissions (进制转换)
- HDU 5186 zhx's submissions 模拟水题
- 杭电 HDU ACM 5186 zhx's submissions
- hdu 5186 zhx's submissions 5187 zhx's contest快速幂小优化
- hdu5186 zhx's submissions
- 【CUGBACM15级BC第33场 A】hdu 5186 zhx's submissions
- BestCoder #33 zhx's submissions
- BestCoder Round #33 1001 zhx's submissions
- Hdu 5187 zhx's contest(数学)
- zhx's contest HDU
- HDU 5187 zhx's contest
- HDU - 5187 zhx's contest
- 【转】利用百度BAE3.0搭建原版WORDPRESS博客详细教程
- quick-cocos2d-x 学习系列之十三 触摸
- 致佳音: 推箱子游戏自动求解算法设计(五)
- 把你的想法说出来——一个故事给我的启示
- Android基础笔记(十)- 帧动画、补间动画详解、对话框
- HDU - 5186 - zhx's submissions (大数高精度)
- Lua基础
- hdu 5186 zhx's submissions 5187 zhx's contest快速幂小优化
- [uboot学习笔记(二)]uboot第一阶段start.S文件分析
- NLP成功十四项心理定律
- 国外程序员推荐:每个程序员都应读的书
- 你这辈子这么拼命奋斗要证明什么?
- 删除单向链表倒数第n个节点
- 粟踩邓倘氏谢僬韧倌短瘸吠卦虾谥