NYOJ-303 序号互换【模拟】
来源:互联网 发布:淘宝客佣金计算 编辑:程序博客网 时间:2024/05/19 00:36
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=303
解题思路:
省赛的水题。写了一下,第一次把题意理解错了,然后第二次写,发现数字转字母不会。。YY了才知道最后一个是Z时,总是26×26的0次方,不是26的话我们直接res/=26就可以把余数去掉,不影响下一个元素,而这个我们res/=26之后,这个Z结尾的26并没有去掉影响,所以res/=26之后还多了一个26,减去1就可以了。
代码如下:
#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<string>#include<algorithm>using namespace std;char s[10010], ans[10010];void cmp(char *str) //数字转字母{int res = 0, top = 0;int len = strlen(str);for(int i = 0; i < len; ++i)res += (int)((str[i] - '0') * pow(10.0, len - 1 - i));while(res){if(res % 26 != 0){ans[top++] = res % 26 + 'A' - 1;res /= 26;}else{ans[top++] = 'Z';res = res / 26 - 1; //-1}}for(int i = top - 1; i >= 0; --i)printf("%c", ans[i]);printf("\n");}int fun(char *str) //字母转数字{int sum = 0;int len = strlen(str);for(int i = len - 1, j = 0; i >= 0; --i, ++j)sum += (int)(str[i] - 'A' + 1) * pow(26.0, j);return sum;}int main(){int ncase;scanf("%d", &ncase);while(ncase--){scanf("%s", s);if(s[0] >= '1' && s[0] <= '9')cmp(s);elseprintf("%d\n", fun(s));}return 0;}
- NYOJ-303 序号互换【模拟】
- NYOJ 303-序号互换【模拟】
- NYOJ 303 序号互换【模拟】
- NYOJ 303 序号互换
- NYOJ 303 序号互换
- NYOJ 303 序号互换
- NYOJ 303 序号互换
- nyoj 303 序号互换
- nyoj 303 序号互换
- nyoj 303 序号互换
- NYOJ—303—序号互换
- NYOJ 题目303 序号互换(水)
- NYOJ:序号互换
- NYOJ-303-序号互换(第四届河南省程序设计大赛A题(模拟))
- 字符与数字互换 —— nyoj 303 序号互换
- NYOJ 303【序号互换】第四届河南省程序设计大赛
- 第四届河南省程序设计大赛-NYOJ-303-序号互换
- nyoj 303 序号互换 第四届河南省程序设计大赛
- Can't connect to MySQL server on IP(10060)
- 4节点Rac留念一下
- STL中map用法详解
- VC++中的char,wchar_t,TCHAR
- C++实现注册表简单操作
- NYOJ-303 序号互换【模拟】
- MVC框架实现2---Smart通用常量类和工具类代码
- 设计模式——原型模式(Prototype)
- MFC 给自定义工具栏添加提示信息
- 在grep中使用正则表达式使用
- android自定义view 实现TextView 中文粗体
- python Socket编程(四)----FTP
- StarUML---推荐一款UML工具(很好很强大)
- 敏捷开发实践