Integer to Roman
Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
簡單 值觀就是直接暴力法了
麻煩的是
4 9 40 90 400 900
要另外處理
/*
I=1 V=5 X=10 L=50 C=100 D=500 M=1000
IV=4 IX=9 XL=40 XC=90 CD=400 CM=900
*/
char* intToRoman(int num) {
int size=0;
char *ans;
int i=0;
while(num!=0){
if(num/1000){
for( i=0;i
}
num-=1000*(i);
}
if(num/900){
ans[size++]='C';
ans[size++]='M';
num-=900;
}
if(num/500){
for( i=0;i
}
num-=500*(i);;
}
if(num/400){
ans[size++]='C';
ans[size++]='D';
num-=400;
}
if(num/100){
for( i=0;i
}
num-=100*(i);
}
if(num/90){
ans[size++]='X';
ans[size++]='C';
num-=90;
}
if(num/50){
for( i=0;i
}
num-=50*(i);
}
if(num/40){
ans[size++]='X';
ans[size++]='L';
num-=40;
}
if(num/10){
for( i=0;i
}
num-=10*(i);
}
if(num/9){
ans[size++]='I';
ans[size++]='X';
num-=9;
}
if(num/5){
for( i=0;i
}
num-=5*(i);
}
if(num/4){
ans[size++]='I';
ans[size++]='V';
num-=4;
}
if(num){
for( i=0;i
}
num-=1*(i);
}
}
ans[size]='\0';
return ans;
}
沒有留言:
張貼留言