07/05/14 20:57:46
>>535 プログラムよりアルゴリズムの方が(数学が)難しかった
#include<stdio.h>
int main(void){
int x, tmp, left, ans, digit_align;
printf("正整数を入力してください > ");
scanf("%d", &x);
if(x<0){printf("\nError:正整数を入力してください\n");return 1;}
for(digit_align=1;x/digit_align>=100;digit_align*=100);
left=x/digit_align;
ans=0;
while(left>0 || digit_align>0){
for(tmp=9;tmp>0;tmp--)
if((ans*20+tmp)*tmp<=left)
break;
if((ans*20+tmp)*tmp<0) break; // overflow?
printf("%d", tmp);
if(digit_align==1) printf(".");
digit_align/=100;
if(digit_align>0)
left=(left-(ans*20+tmp)*tmp)*100+(x/digit_align)%100;
else
left=(left-(ans*20+tmp)*tmp)*100;
ans=ans*10+tmp;
}
printf("\n");
return 0;
}