UVA10494 - If We Were a Child Again

题目地址http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1435

前面一个是大数需要字符串来存 后面一个定义long型就够了 计算的时候就是边做边把字符转换为数字

取余比较简单一点 可以边转边取余 转完输出结果就行了

除法 模拟手算 从头找 找第一个能被它整除的那一位 找到之后 就依次除就行了 除的结果存在一个整型数组里

#include <stdio.h>
#include <stdlib.h>
#include<string.h>
int main()
{
    long x, i, j, k ,s;
    int y,flag,r[1001];
    char c[1001],p;
    while(scanf("%s %c %ld", c, &p, &x)!=EOF)
    {
        s = 0;
        y = 1;
        j = 0;
        k = strlen(c);
        if(p == '/')
        {
            flag = 0;//标记一个变量 找到第一个之后 依次除下去 
            for(i = 0 ; i < k ; i++)
            {
                s= s*10+c[i]-'0';
                if(s>=x&&flag == 0)
                {
                    r[j++] = s/x;
                    s = s%x;
                    flag = 1;
                }
                else
                if(flag)
                {
                    r[j++] = s/x;
                    s = s%x;
                }
            }
            flag = 0;
            for(i = 0 ; i < j ; i++)
            {
                printf("%d",r[i]);
                flag = 1;
            }
             if(flag == 0)
             printf("0");
            puts("");
        }
        else
        {
            s = 0;
            for(i = 0 ; i < k; i++)
            {
                s = s*10+c[i]-'0';
                s = s%x;
            }
            printf("%ld\n", s);
        }
View Code
 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include<string.h>
 4 int main()
 5 {
 6     long x, i, j, k ,s;
 7     int y,flag,r[1001];
 8     char c[1001],p;
 9     while(scanf("%s %c %ld", c, &p, &x)!=EOF)
10     {
11         s = 0;
12         y = 1;
13         j = 0;
14         k = strlen(c);
15         if(p == '/')
16         {
17             flag = 0;//标记一个变量 找到第一个之后 依次除下去 
18             for(i = 0 ; i < k ; i++)
19             {
20                 s= s*10+c[i]-'0';
21                 if(s>=x&&flag == 0)
22                 {
23                     r[j++] = s/x;
24                     s = s%x;
25                     flag = 1;
26                 }
27                 else
28                 if(flag)
29                 {
30                     r[j++] = s/x;
31                     s = s%x;
32                 }
33             }
34             flag = 0;
35             for(i = 0 ; i < j ; i++)
36             {
37                 printf("%d",r[i]);
38                 flag = 1;
39             }
40              if(flag == 0)
41              printf("0");
42             puts("");
43         }
44         else
45         {
46             s = 0;
47             for(i = 0 ; i < k; i++)
48             {
49                 s = s*10+c[i]-'0';
50                 s = s%x;
51             }
52             printf("%ld\n", s);
53         }
54     }
55     return 0;
56 }

 

 

posted @ 2012-06-17 01:12  _雨  阅读(320)  评论(0编辑  收藏  举报