PAT乙级.1022. D进制的A+B (20)
来源:互联网 发布:linux虚拟机挂载光盘 编辑:程序博客网 时间:2024/04/20 01:54
1022. D进制的A+B (20)
题目:
输入两个非负10进制整数A和B(<=230-1),输出A+B的D (1 < D <= 10)进制数。
输入格式:
输入在一行中依次给出3个整数A、B和D。
输出格式:
输出A+B的D进制数。
输入样例:
123 456 8
输出样例:
1103
PAT链接
思路:
1.先计算A+B的值,然后用除基取余法来得到将结果转化为D进制
do //用do是考虑sum为0的情况 { res[num++] = sum % D; sum = sum / D; } while (sum != 0);
2.用31位的数组来存储最后的结果,最后由高到低依次打印结果
代码:
/*** @tag PAT_B_1022* @authors R11happy (xushuai100@126.com)* @date 2016-8-18 18:47-19:01* @version 1.0* @Language C++* @Ranking 310/2280* @function null*/#include <cstdio>#include <cstdlib>#include <cstring>int main(int argc, char const *argv[]){ int A, B, D; int res[31]; //最多31位,用数组来存放最后的结果 scanf("%d%d%d", &A, &B, &D); int sum = A + B; int num = 0; //记录位数 do //用do是考虑sum为0的情况 { res[num++] = sum % D; sum = sum / D; } while (sum != 0); //从高位开始输出 for (int i = num - 1; i >= 0; i--) { printf("%d", res[i]); } printf("\n"); return 0;}
收获:
1.将P进制数x转换为十进制数y:
int y = 0, product = 1; //product在循环中会不断乘p,得到1,p,p^2,p^3……while(x != 0){ y = y + (x % 10) * product; x = x / 10; //去掉x的个位 product = product * P; }
2.“除基取余法”将十进制数y转换为Q进制数z
do //用do是考虑sum为0的情况 { res[num++] = sum % D; sum = sum / D; } while (sum != 0);
0 0
- PAT-乙级-1022. D进制的A+B (20)
- PAT乙级.1022. D进制的A+B (20)
- 1022. D进制的A+B (20) PAT乙级
- PAT乙级1022. D进制的A+B (20)
- 1022. D进制的A+B (20)-PAT乙级
- PAT 乙级 1022. D进制的A+B (20)
- PAT乙级 1022. D进制的A+B (20)
- PAT乙级1022. D进制的A+B (20)
- PAT 乙级 1022. D进制的A+B (20)
- [PAT乙级]1022. D进制的A+B (20)
- PAT 乙级 1022.D进制的A+B(20)
- pat 乙级 1022. D进制的A+B (20)
- 1022. D进制的A+B (20)--PAT乙级
- PAT乙级1022. D进制的A + B(20)
- PAT乙级1022. D进制的A+B (20)
- PAT 乙级 1022. D进制的A+B
- PAT(乙级)1022. D进制的A+B
- PAT乙级 1022. D进制的A+B
- 位运算入门应用以及技巧
- 【BZOJ1013】球形空间产生器,第一次的高斯消元
- 五、Android的assets资源使用
- java经典问题生兔子
- tshark的使用
- PAT乙级.1022. D进制的A+B (20)
- MySQL(四)索引的操作
- SDUT 小明的花费预算 2778(二分)
- 【cocos2dx】jpg纹理占用内存优化
- HDU 1022 Train Problem I 栈
- 学霸系统
- 四大组件之Activity
- 初识python(一)
- 四大组件之Service