UVa 10494 - If We Were a Child Again

1382 단어
제목 링크: 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("
"); } else if(c=='%') { long aa; aa=mod(); printf("%ld
",aa); } } return 0; }

좋은 웹페이지 즐겨찾기