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 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.
 
Input
Multiply test cases(less than 1000).
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.
 
Output
For each test case, output a single line indicating the answer in B−base(no
leading zero).
 
Sample Input
2 3
2
2
1 4
233
3 16
ab
bc
cd
 
Sample Output
1
233
14
 
Source
 



思路:就是不进位的大数相加啦,要注意当结果为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&#39;s submissions (精密塔尔苏斯)的更多相关文章

  1. HDU 5186 zhx&#39;s submissions (进制转换)

    Problem Description As one of the most powerful brushes, zhx submits a lot of code on many oj and mo ...

  2. HDU 5186 zhx's submissions 模拟,细节 难度:1

    http://acm.hdu.edu.cn/showproblem.php?pid=5186 题意是分别对每一位做b进制加法,但是不要进位 模拟,注意:1 去掉前置0 2 当结果为0时输出0,而不是全 ...

  3. HDU - 5187 - zhx&#39;s contest (高速幂+高速乘)

    zhx's contest Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) To ...

  4. HDU 5187 zhx&#39;s contest(防爆__int64 )

    Problem Description As one of the most powerful brushes, zhx is required to give his juniors n probl ...

  5. hdu 5186(模拟)

    zhx's submissions Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others ...

  6. hdu 5188 zhx and contest [ 排序 + 背包 ]

    传送门 zhx and contest Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Othe ...

  7. hdu 5187 zhx's contest [ 找规律 + 快速幂 + 快速乘法 || Java ]

    传送门 zhx's contest Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others ...

  8. hdu 3966 Aragorn&#39;s Story(树链剖分+树状数组)

    pid=3966" target="_blank" style="">题目链接:hdu 3966 Aragorn's Story 题目大意:给定 ...

  9. HDU 3966 Aragorn&#39;s Story(树链剖分)

    HDU Aragorn's Story 题目链接 树抛入门裸题,这题是区间改动单点查询,于是套树状数组就OK了 代码: #include <cstdio> #include <cst ...

随机推荐

  1. NET通用平台

    NET通用平台.通用权限.易扩展.多语言.多平台架构框架 先拿出我半前年前平台的设计初稿,经过半年的努力我已经完成了该设计稿的所有功能.并且理念已经远远超出该设计稿. 下面是一些博友对我贴子的评价: ...

  2. python学习之print输出不换行

    print的即时打印会导致换行,要使得print的输出不换行,可以在字符串或者变量后面加个逗号(“,”),如下: s = "A bird in the hand..." for c ...

  3. postgresql数据库配置csv格式的日志输出

    postgresql数据库配置csv格风格日志输出 以下介绍postgresql数据库中关于csv格式日志(pg中一种比較具体的日志输出方式)的设置方法. 1.进入$PGDATA文件夹(pg的安装文件 ...

  4. Emacs经常使用快捷键的注意事项

    一直用VIM,尝试了好几次Emacs都被它"多得像天上的星星"一样的快捷键给吓倒了.这几天最终下定决心再次尝试. 将它的Tutor练习了一下,顺便对经常使用快捷键做了一下笔记,方便 ...

  5. JNDI 什么

    JNDI是 Java 命名与文件夹接口(Java Naming and Directory Interface).在J2EE规范中是重要的规范之中的一个,不少专家觉得,没有透彻理解JNDI的意义和作用 ...

  6. Type mismatch: cannot convert from Enumeration&lt;String&gt; to Enumeration&lt;Object&gt;

    完整的错误信息: Description Resource Path Location TypeType mismatch: cannot convert from Enumeration<St ...

  7. iOS相机去黑框

    自己定义相机的时候,调用系统的相机,因为相机的分辨率,会出现短小的矩形框,总会出现黑色边框,例如以下图: 假设想实现全屏相机的话,这样做就能够了: CALayer *viewLayer = self. ...

  8. 最近做RTSP流媒体的实时广播节目

    //h264视频流打包代码 // NALDecoder.cpp : Defines the entry point for the console application. #include < ...

  9. udacity android 学习笔记: lesson 4 part b

    udacity android 学习笔记: lesson 4 part b 作者:干货店打杂的 /titer1 /Archimedes 出处:https://code.csdn.net/titer1 ...

  10. Autofac 入门

    Autofac 入门文档 原文链接:http://docs.autofac.org/en/latest/getting-started/index.html 在程序中使用Autofac的基本模式是: ...