간단 한 수학 문제 - hdu - 4485 - B - Casting

1422 단어 수학.
제목 링크:
http://acm.hdu.edu.cn/showproblem.php?pid=4485
제목:
B 진법 의 수 를 주 고 이 모드 (B - 1) 의 값 을 구하 세 요.
문제 풀이 방향:
주어진 수가 많 기 때문에 직접 할 수 없 을 것 이다.
주어진 수 를 기록 하고, 한 자리 에서 가장 높 은 자리 까지 는 a0, a1, a2, a3, a4,......................................................
10 진법 으로 전 환 된 수 는 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); } }

좋은 웹페이지 즐겨찾기