POJ 3077 Rounders(高精度)

来源:互联网 发布:网络机顶盒apk 编辑:程序博客网 时间:2024/05/18 09:42

Description
给一个数字,然后从最后一位开始进位,满5进1,小于5变成0,10一下的不用进位
Input
第一行为用例组数n,之后n行每行一个整数x (0<=x<=99999999)
Output
对于每组用例,输出进位后的结果
Sample Input
9
15
14
4
5
99
12345678
44444445
1445
446
Sample Output
20
10
4
5
100
10000000
50000000
2000
500
Solution
简单模拟题,因为x很大,故用字符串模拟进位过程
Code

#include<stdio.h>#include<string.h>int main(){    char c[100];    int n,len,i;    scanf("%d",&n);    getchar();//读入换行     while(n)    {        gets(c);//读入一个数         len=strlen(c);        for(i=len-1;i>=0;i--)        {            if(c[i]-'0'>=5&&i>=1)//大于10的才进位             {                c[i-1]++;//进位                 c[i]='0';//该位变成0                 if(c[0]-'0'==10)//最高位仍需进位                 {                    c[0]='1';                    len++;//位数加一                     c[len-1]='0';                    c[len]='\0';//注意'\0'                 }            }                       else if(c[i]-'0'<5&&i>=1)//小于5的直接变成0                     c[i]='0';        }         puts(c);        n--;    }     return 0;}
0 0
原创粉丝点击