zoukankan      html  css  js  c++  java
  • 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;
    }

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

  • 相关阅读:
    day9文件处理
    day8字符编码
    js小数乘法精确率问题
    webstorm上传vue代码至git
    vue项目关闭eslint检查
    MongoDB相关操作
    Redis持久化存储
    Redis 数据类型
    linux常用命令
    初识NoSQL
  • 原文地址:https://www.cnblogs.com/OFSHK/p/12650088.html
Copyright © 2011-2022 走看看