浏览器标题切换
浏览器标题切换end

LightOJ1214 - Large Division - 大数取余运算

解题思路:

第一遍题意理解正确一半,思路完全错误
一开始ab都用了字符串输入
同余定理,快速幂,错错错

正确思路:
考虑a的负数情况,b不用考虑
a字符串输入,b int 即可

 

比较特别的处理:(  k*10+c[ j ] )%b;

#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;

char a[222];
int c[222];

int main()
{
    int n,i,j;
    long long b;
    while(~scanf("%d",&n))
    {
        int t=1;
        for(i=1; i<=n; i++)
        {
            scanf("%s %lld",a,&b);
            int l=strlen(a);
            if(b<0)
                b=-b;
            int p=0,q=0;
            if(a[0]=='-')
            {
                for(j=1; j<l; j++)
                {
                    c[p++]=a[j]-48;
                }
            }
            else
            {
                for(j=0; j<l; j++)
                {
                    c[p++]=a[j]-48;
                }
            }
            p--;
            long long k=0;
            for(j=0; j<=p; j++)
            {
                k=(k*10+c[j])%b;//这里写法注意一下
            }
            if(k==0)
                printf("Case %d: divisible\n",t++);
            else
                printf("Case %d: not divisible\n",t++);
            memset(a,'\0',sizeof(a));
            memset(c,0,sizeof(c));
        }
    }
    return 0;
}

这样输入不知道为啥会这样?????

posted @ 2019-05-26 13:07  抓水母的派大星  阅读(116)  评论(0编辑  收藏  举报