UVALive 4660 A+B
来源:互联网 发布:手机陶笛软件 编辑:程序博客网 时间:2024/05/16 07:05
Regionals 2009 >> Asia - Jakarta
题链接:UVALive 4660 A+B。入门训练题,用C语言编写程序。
这是一个进制问题,输入的两个数不知道是几进制,也就是几进制都可以,求的是两个数最小的和,结果以10进制输出。
对于输入的两个数来说,进制越小值越小,所以尽可能选进制小的。最小的可能的进制就是一串数字中最大的数字加上1。只要两个数的进制知道了,事情就好办了。
另外,需要详细知道函数atoi()的原理,才能够随心所欲地解决进制有关的问题。
程序中,使用字符流读方式,使用函数getchar()读入数据,同时求得数的最小进制。
封装了一个函数atoi()来实现字符串转整数。
AC的C语言程序如下:
/* UVALive4660 A+B */#include <stdio.h>typedef unsigned long long ULL;#define MAXN 100ULL atoi(char *p, int base){ ULL result = 0; while(*p) { result *= base; result += *p - '0'; p++; } return result;}int main(void){ int n, sbase, tbase, i; char c, s[MAXN], t[MAXN]; ULL val1, val2; scanf("%d", &n); getchar(); while(n--) { sbase = 0; i = 0; while((c = getchar()) != ' ') { if(c > sbase) sbase = c; s[i++] = c; } s[i] = '\0'; sbase = sbase - '0' + 1; tbase = 0; i = 0; while((c = getchar()) != '\n' && c != EOF) { if(c > tbase) tbase = c; t[i++] = c; } t[i] = '\0'; tbase = tbase - '0' + 1; val1 = atoi(s, sbase); val2 = atoi(t, tbase); printf("%lld\n", val1 + val2); } return 0;}
1 0
- UVALive 4660 A+B
- UVaLive 6482 A+B
- UVALive 6428A+B 【扩展欧几里得】
- Uvalive 6428 A+B(扩展欧几里得算法)
- UVALive 6428 A+B // 扩展欧几里德
- UVALive 6428 A+B 扩展欧几里德
- A Giveaway UVALive
- (UVALive 7711)A
- UVALive 4636 B - Cubist Artwork
- UVALive 4642 (B) Malfatti Circles
- a>b?a:b
- UvaLive 3964 - A Foldy but a Goody
- UVALive 6173|HDU 4485|B-Casting|水体
- a+b
- a+++b
- A + B
- A+B
- A+B
- CSS-列表基础记录
- Leetcode 62. Unique Paths (Medium) (cpp)
- 删除As low as 价格
- NDK相关组件及作用
- Bug分支
- UVALive 4660 A+B
- Javascript算法练习(六)
- 配置用户通过Telnet登录设备
- [LeetCode] 68. Text Justification
- Animation倒过来播放
- 有关并发的代码(未整理完)
- 解决使用NPOI在已有Sheet中插入多张图片问题
- Java调用批处理或可执行文件和Runtime、Process类实现Java版进程管理器
- android -wifi热点设置问题