zoukankan      html  css  js  c++  java
  • 简单数学题-hdu-4485-B-Casting

    题目链接:

    http://acm.hdu.edu.cn/showproblem.php?pid=4485

    题目意思:

    给一个B进制的数,求这个数模(B-1)的值。

    解题思路:

    由于给定的数很大,肯定不能直接来搞。

    记给定的数,从个位到最高位依次为a0,a1,a2,a3,a4,.....an.

    转化成十进制的数为a0*B^0+a1*B+a2*B^2+a3*B^3+...+an*B^n 记为K,题目也即求K%(B-1)

    构造数P=a0+a1+a2+...+an   则K-P=0+a1*(B-1)+a2*(B^2-1)+a3*(B^3-1)+...+an*(B^n-1)  显然(K-P)%(B-1)=0  所以记K-P=m*(B-1) 则K=P+m*(B-1) 所以K%(B-1)=P%(B-1).

    代码:

    #include <iostream>
    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    #include<cstdlib>
    #include<cctype>
    #include<map>
    #include<set>
    #include<queue>
    #include<vector>
    
    using namespace std;
    
    const double eps = 1e-5;
    const double PI = acos(-1.0);
    typedef __int64 ll;
    
    //char save[11000000];
    
    int main()
    {
        int t;
    
        scanf("%d",&t);
        while(t--)
        {
            int d,b;
            scanf("%d%d",&d,&b);
            b--;
            char c;
            while(isspace(c=getchar()));
            ll ans=c-'0';
    
            while(!isspace(c=getchar()))
                ans=(ans+c-'0');
            printf("%d %I64d
    ",d,ans%b);
    
        }
    
    }


  • 相关阅读:
    20170809上课笔记
    20170808上课笔记
    20170807上课笔记
    20170804上课笔记
    《备份恢复3》
    《备份恢复2》
    《SQL语句测试》
    《备份恢复1》
    《oracle管理7》
    《oracle管理6》
  • 原文地址:https://www.cnblogs.com/bbsno1/p/3253503.html
Copyright © 2011-2022 走看看