HDU - 5186 - zhx's submissions (精密塔尔苏斯)
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
One day, zhx wants to count how many submissions he made on n 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 you n 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 to 5+6 in 10−base is 1.
And he also asked you to calculate in his way.
Seek EOF as
the end of the file.
For each test, there are two integers n and B separated
by a space. (1≤n≤100, 2≤B≤36)
Then come n lines. In each line there is a B−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.
leading zero).
2 3
2
2
1 4
233
3 16
ab
bc
cd
1
233
14
思路:就是不进位的大数相加啦,要注意当结果为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 205
char 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;
}
版权声明:本文博客原创文章,博客,未经同意,不得转载。
HDU - 5186 - zhx's submissions (精密塔尔苏斯)的更多相关文章
- HDU 5186 zhx's submissions (进制转换)
Problem Description As one of the most powerful brushes, zhx submits a lot of code on many oj and mo ...
- HDU 5186 zhx's submissions 模拟,细节 难度:1
http://acm.hdu.edu.cn/showproblem.php?pid=5186 题意是分别对每一位做b进制加法,但是不要进位 模拟,注意:1 去掉前置0 2 当结果为0时输出0,而不是全 ...
- HDU - 5187 - zhx's contest (高速幂+高速乘)
zhx's contest Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) To ...
- HDU 5187 zhx's contest(防爆__int64 )
Problem Description As one of the most powerful brushes, zhx is required to give his juniors n probl ...
- hdu 5186(模拟)
zhx's submissions Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others ...
- hdu 5188 zhx and contest [ 排序 + 背包 ]
传送门 zhx and contest Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Othe ...
- hdu 5187 zhx's contest [ 找规律 + 快速幂 + 快速乘法 || Java ]
传送门 zhx's contest Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others ...
- hdu 3966 Aragorn's Story(树链剖分+树状数组)
pid=3966" target="_blank" style="">题目链接:hdu 3966 Aragorn's Story 题目大意:给定 ...
- HDU 3966 Aragorn's Story(树链剖分)
HDU Aragorn's Story 题目链接 树抛入门裸题,这题是区间改动单点查询,于是套树状数组就OK了 代码: #include <cstdio> #include <cst ...
随机推荐
- 一个css和js结合的下拉菜单,支持主流浏览器
首先声明: 本人尽管在web前端岗位干了好多年,但无奈岗位对技术要求不高.html,css用的比較多,JavaScript自己原创的非常少,基本都是copy改动,所以自己真正动手写时,发现基础非常不坚 ...
- struts2集成fckeditor(来自大型门户网站是这样练成的一书)
- 理解RESTful架构(转)
越来越多的人开始意识到,网站即软件,而且是一种新型的软件. 这种"互联网软件"采用客户端/服务器模式,建立在分布式体系上,通过互联网通信,具有高延时(high latency).高 ...
- 推荐15个月 Node.js 开发工具
Node.js 越来月流行.这个基于 Google V8 引擎建立的平台, 用于方便地搭建响应速度快.易于扩展的网络应用.在本文中.我们列出了2015年最佳的15个 Node.js 开发工具.这些工具 ...
- BDB (Berkeley DB)简要数据库(转载)
使用最近DBD.然后搜了下相关资料,首先公布的是一门科学: 转会http://www.javaeye.com/topic/202990 DB综述DB最初开发的目的是以新的HASH訪问算法来取代旧的hs ...
- Java实现字符全阵列阵列
import org.junit.Test; public class AllSort { public void permutation(char[] buf, int start, int end ...
- Ubuntu 如何重新安裝 Unity ?
阿舍在刪除 Qt 的時候下錯指令,結果,就把 Unity 給移除掉了,雖然,阿舍從此就知道 Unity 和 Qt 有不分離的關係,不過,就沒有Unity可以用了,這樣阿舍要試東西就不是很方便了哩 ! ...
- hdu1394--Minimum Inversion Number(线段树求逆序数,纯为练习)
Minimum Inversion Number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Ot ...
- spring来源理解-BeanFactory子类XmlBeanFactory创建过程
BeanFactory 1:BeanFactory什么: 官方解释The root interface for accessing a Spring bean container,翻译成中文sprin ...
- Linux在简短而经常使用的命令
Linux组成: 内核:的心脏.是执行程序和管理像磁盘和打印机等硬件设备的核心程序. shell:是系统的用户界面,提供了用户和内核进行交互操作的一种接口.它接收用户输入的命令并把它送入内核去执行.是 ...