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 ...
随机推荐
- 在Xshell中上传下载文件到本地(linux中从多次ssh登录的dbserver里面的文件夹)
在Xshell中上传下载文件到本地(linux中从多次ssh登录的dbserver里面的文件夹) 1 列出所有需要copy的sh文件 -bash-4.1$ ll /mysqllog/osw/*.sh ...
- 在项目里交叉使用Swift和OC
Swift and Objective-C in the Same Project 在项目里交叉使用Swift和OC Swift与OC的兼容性使得你能够在项目里使用Swift+OC的方式编写应用程序, ...
- WPF命中测试示例(一)——坐标点命中测试
原文:WPF命中测试示例(一)--坐标点命中测试 命中测试也可被称为碰撞测试,在WPF中使用VisualTreeHelper.HitTest()方法实现,该方法用于获取给定的一个坐标点或几何形状内存在 ...
- Visual Studio Code中配置GO开发环境
在Visual Studio Code中配置GO开发环境 一.GO语言安装 详情查看:GO语言下载.安装.配置 二.GoLang插件介绍 对于Visual Studio Code开发工具,有一款优秀的 ...
- ZOJ 3795 Grouping 求最长链序列露点拓扑
意甲冠军:特定n积分.m向边条. 该点被划分成多个集合随机的每个集合,使得2问题的关键是无法访问(集合只能容纳一个点) 问至少需要被分成几个集合. 假设没有戒指,接着这个话题正在寻求产业链最长的一个有 ...
- 发展合作-ASP.Net传递页面之间的值
在合作开发中,在页面串传值的时候,遇到了一些困难.在网上搜罗了一下,发现好多的传值方式,能够简单地分下面三种. 一. URL传值 原页面的值放到目标页面的URL中.然后通过QueryString方法获 ...
- GPS 偏移校正(WGS-84) 至(GCJ-02) java版本号以实现
public class EvilTransform { final static double pi = 3.14159265358979324; // // // a = 6378245.0, 1 ...
- 间隔DP基础 POJ2955——Brackets
取血怒.first blood,第一区间DP,这样第一次没有以某种方式在不知不觉中下降~~~ 题目尽管是鸟语.但还是非常赤裸裸的告诉我们要求最大的括号匹配数.DP走起~ dp[i][j]表示区间[i, ...
- hdu1372 dfs搜索之国际象棋的马
原题地址 题意 一个8x8的国际象棋棋盘,你有一个棋子"马".算出棋子"马"从某一格到还有一格子的最少步数. 与普通dfs不同的是,你能走的路线不是上下左右,四 ...
- atitit.设计模式(2) -----查询方式/ command 总结
atitit.设计模式(2) -----查询方式/ command 总结 1. 应用场景: 1 1. 代替一瓦if else 1 2. 建设api rpc风格的时候儿. 1 3. 菜单是Command ...