UVA 389 Basically Speaking
2017-03-02 17:21
225 查看
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<cstdio>
#include<iostream>
#include<math.h>
using namespacestd;
int main(){
char a[7];
// for(int i = 0; i < 7; i++) a[i] = 1;
int b,c;
b = c = 0;
int sum =0;
while(scanf("%s %d %d",a,&b,&c)!=EOF){
/* int i = 0;
while(a[i] == '0') ++i;
int t = i;
int length = strlen(a);
for(int j = t ; j < length; ++j ) {
int zhishu;
if(a[j] >= '0' && a[j] <= '9'){
zhishu = a[j] - '0';
}else zhishu = a[j] - '0' - 7;
int l;
if(t != 0) l = pow(b,length - j - t);
else l = pow(b,length - j - t - 1);
sum += zhishu*l;
*/
sum = strtol(a,NULL, b);
if(sum ==0)
cout <<" 0" <<
endl ;
else{
//已经全转成了十进制
char m[7] = {0};
for(int i =0; i !=
7; ++i) {
int temp = sum % c;
if(temp >=10){
char n;
n = temp + 55;
m[6-i] = n;
}
else m[6-i] = temp +48 ;
sum /= c;
}//转换成对应进制
if(sum !=0)
cout <<" ERROR" <<
endl;
else {
int i , j;
i = j = 0;
while(m[j]=='0') {++j;cout <<
" ";}
for(int i = j; i <7; i++){
cout << m[i];
}
cout <<endl;
}
}
}
return0;
}
1.遇到任意进制的字符串格式转10进制,可以直接使用strtol(字符串,null,原进制)
2.多次wa因为没有考虑到00000000 的现实情况,应该把它也作为极端情况之一
3.十进制转任意进制关键 先取余数 再除 如果大于10 就用 temp - 10 + 'A'
4.可以通过这个实现打印的字符长度为7的效果,
printf("%7s\n","ERROR");
printf("%7s\n","0");
printf("%7s\n",output);
#include<stdlib.h>
#include<string.h>
#include<cstdio>
#include<iostream>
#include<math.h>
using namespacestd;
int main(){
char a[7];
// for(int i = 0; i < 7; i++) a[i] = 1;
int b,c;
b = c = 0;
int sum =0;
while(scanf("%s %d %d",a,&b,&c)!=EOF){
/* int i = 0;
while(a[i] == '0') ++i;
int t = i;
int length = strlen(a);
for(int j = t ; j < length; ++j ) {
int zhishu;
if(a[j] >= '0' && a[j] <= '9'){
zhishu = a[j] - '0';
}else zhishu = a[j] - '0' - 7;
int l;
if(t != 0) l = pow(b,length - j - t);
else l = pow(b,length - j - t - 1);
sum += zhishu*l;
*/
sum = strtol(a,NULL, b);
if(sum ==0)
cout <<" 0" <<
endl ;
else{
//已经全转成了十进制
char m[7] = {0};
for(int i =0; i !=
7; ++i) {
int temp = sum % c;
if(temp >=10){
char n;
n = temp + 55;
m[6-i] = n;
}
else m[6-i] = temp +48 ;
sum /= c;
}//转换成对应进制
if(sum !=0)
cout <<" ERROR" <<
endl;
else {
int i , j;
i = j = 0;
while(m[j]=='0') {++j;cout <<
" ";}
for(int i = j; i <7; i++){
cout << m[i];
}
cout <<endl;
}
}
}
return0;
}
1.遇到任意进制的字符串格式转10进制,可以直接使用strtol(字符串,null,原进制)
2.多次wa因为没有考虑到00000000 的现实情况,应该把它也作为极端情况之一
3.十进制转任意进制关键 先取余数 再除 如果大于10 就用 temp - 10 + 'A'
4.可以通过这个实现打印的字符长度为7的效果,
printf("%7s\n","ERROR");
printf("%7s\n","0");
printf("%7s\n",output);
相关文章推荐
- UVA_389_Basically Speaking
- HDU1335 POJ1546 UVA389 UVALive5306 ZOJ1334 Basically Speaking【进制+atio+itoa】
- UVa389 - Basically Speaking
- UVa 389 - Basically Speaking
- UVa 389 Basically Speaking
- UVa Problem Solution: 10050 - Hartals
- UVa 10082 - WERTYU
- uva 11481 Arrange the Numbers
- uva 10912 Simple Minded Hashing (DP)
- uva 1363 - Joseph's Problem(数论)
- UVA1400 - "Ray, Pass me the dishes!"
- Uva 11825 Hackers' Crackdown ACM解题报告(状压dp)
- uva 11205 The broken pedometer(暴力枚举+子集生成)
- UVa 1400(LA 3938)动态最大连续和
- UVa 11462
- UVa 11806 Cheerleaders (数论容斥原理)
- 【ACM刷题录】UVa10288 Coupons
- UVa11584 - Partitioning by Palindromes(dp)
- UVa Problem Solution: 10037 - Bridge
- UVA 10173 旋转卡壳