(PTA乙级C语言) 1022 D进制的A+B——关于进制转换
2019-03-07 17:23
951 查看
1022 D进制的A+B (20 分)
输入两个非负 10 进制整数 A 和 B (≤230−1),输出 A+B 的 D (1<D≤10)进制数。
输入格式:
输入在一行中依次给出 3 个整数 A、B 和 D。
输出格式:
输出 A+B 的 D 进制数。
输入样例:
[code]123 456 8
输出样例:
[code]1103
关于进制转换:
1. P进制的数a 转为 10进制的数x: (代码缩到最精简了不知道以后我能不能看懂。。。)
[code]#include <stdio.h> int main() { //P进制a转10进制x //x = a1*p^0+a2*p^1.... int p,a,x=0,j=0; for(scanf("%d %d",&p,&a); a!=0; a/=10) x = x + (a%10)*pow(p,j++); printf("%d",x); return 0; }2. 10进制的数a 转为 Q进制的数x:
[code]#include <stdio.h> int main(){ //这个是我直接在网页里敲得啦,没运行,但是就这个意思吧。。。 int a,Q; int x[100]; int num = 0; //除Q取余法 scanf("%d %d",&a,&Q); do { x[num++] = a % Q; //取余 x /= Q; //除Q }while(y != 0); for(i=num-1;i>=0;i--) printf("%d",x[i]); return 0; }——《算法笔记》
PS:这里的do...while循环很屁精啊不精辟啊,把0的情况也考虑进去了,我是另外判断的
学会了上面两个这个题直接就可以解决了,不过就是多了个a+b而已啦。
正确代码:
[code]#include <stdio.h> #include <stdlib.h> int main() { long long a,b; int d,i=0,j=0; //Max:2147483646 //除d取余法 int res[100]; scanf("%lld %lld %d",&a,&b,&d); long long sum=a+b; if(sum==0) printf("0"); else { while(sum) { res[i++] = sum % d; sum/=d; } for(j=i-1; j>=0; j--) printf("%d",res[j]); } return 0; }
总的来说还是要掌握基础知识就行了,关于除d取余法和那个。。暂且叫他n次幂公式吧。
另外需要注意数的范围,最后结果数组存的最长的应该是2进制的,因为2进制最长,我开始就写了10位然后运行时错误才反应过来的。。。所以说之后往大了写吧,浪费就浪费吧 =_=
然后下面是犯傻自己想的办法,总的来说开始还是没想起进制转换的这两个公式;
受到之前的日期之差计算的启发写的代码,不过时间复杂度有点高,PTA中运行超时了:
[code]#include <stdio.h> #include <stdlib.h> int main() { int a,b,hex,flag=9; //Max:2147483646 int d[100] = { 0 }; int i; scanf("%d %d %d",&a,&b,&hex); for(i=0; i<a+b; i++) { d[9]++; while(d[flag]==hex) { d[flag]=0; d[--flag]++; } flag = 9; } i=-1; while(d[++i]==0); if(i==100) printf("0"); while(i<100) { printf("%d",d[i++]); } return 0; }
相关文章推荐
- c# 关于10进制和16进制转换以及显示
- [置顶] 【一起来学C语言】常用进制的转换与应用(下)
- C语言简单实现进制互相转换
- 【C语言】【笔试题】编写一个函数itob(int n,char s[], int b),将整数n转换为以b进制的数。保存到s中。
- 一个关于64位进制转换的java实现
- C语言学习趣事_关于指针转换
- 关于C语言的隐式类型转换
- js中关于ASCII码、进制的转换
- 二进制至三十六进制之间的任意转换-C语言
- 关于C语言有无符号数转换
- C语言,进制转换之二进制转十进制,完整代码
- PAT乙级 1022. D进制的A+B (C语言)
- PTA-字符串转换成十进制整数
- 数制转换,将10进制转换为8进制 C语言 栈的应用
- 关于c语言的数据转换的一些心得!
- 用C语言代码实现n进制数转换为十进制数
- 关于C语言的隐式类型转换
- 关于不同进制数之间转换的数学推导【Written By KillerLegend】
- C语言--将整数n转换为以b进制的数。保存到s中
- 关于一个java 进制转换的swing