UVa 10494 - If We Were a Child Again

题目链接:UVa 10494 - If We Were a Child Again

高精度除法和取余,不太会写除法,从网上找来的代码,可以当做模版用。

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
/**
高精度除法和取余
*/
struct bign
{
    int len;
    int s[1000];
};
bign a,res;
char str[1000];
long b;
void change(bign *a)
{
    int i;
    a->len=strlen(str);
    for(i=0;i<a->len;i++)
        a->s[i]=str[i]-'0';
}
void div()
{
    int i,j=0;
    long num=0;
    for(i=0;i<a.len;i++)
    {
        num=num*10+a.s[i];
        res.s[j]=num/b;
        num=num%b;
        j++;
    }
    (&res)->len=j;
}
long mod()
{
    int i,j;
    long ans=0;
    for(i=0;i<a.len;i++)
    {
        ans=ans*10+a.s[i];
        ans=ans%b;
    }
    return ans;
}
int main()
{
    char c;
    while(scanf("%s %c %ld",str,&c,&b)!=EOF)
    {
        change(&a);
        if(c=='/')
        {
            int i=0,j;
            div();
            while(i<res.len-1&&res.s[i]==0)
                ++i;
            for(j=i;j<res.len;j++)
            {
                printf("%d",res.s[j]);
            }
            printf("\n");
        }
        else if(c=='%')
        {
            long aa;
            aa=mod();
            printf("%ld\n",aa);
        }
    }
    return 0;
}




你可能感兴趣的:(UVa 10494 - If We Were a Child Again)