hdu 4432数学雑題

2441 ワード

http://acm.hdu.edu.cn/showproblem.php?pid=4432
6分間書いたコードを午前中にデバッグし、
ああ、1つのテーマは理解していないで書いて、2つの、ああ、気持ちが悪くて、何日も堅持してACMが引退して、当初ずっとregionalが賞を取ることを考えて、それから保研の時にもっときれいな履歴書があって、寝槽、しかし、実は好きなのは心を静めて、1つの知識をよく理解して、自分を見て少しも会議に着くことができなくて、熟練していないから、そしてこの過程でいくつかの思考問題の方法を総括して、このような思考を他の人に応用することができます
しかし----ああ、急功近利式に学んで、いつも速いことを考えて、考えがないと問題解を見に行って、それから平均して2日ごとに1回の試合を見て、チームメイトの間で互いに文句を言って、ああ、気持ちが悪くて、、、本当に、明日の順位を終えて、退くべきかもしれません、最後の何回かの順位は更によくして、それから転んでしまいます
後でサンプルをよく試してから書きます.そのhintの説明は3つのバージョンが間違っていることに気づきました.拭いて、
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <string>
#include <iostream>
#include <iomanip>
#include <cmath>
#include <map>
#include <set>
#include <queue>
using namespace std;

#define ls(rt) rt*2
#define rs(rt) rt*2+1
#define ll long long
#define ull unsigned long long
#define rep(i,s,e) for(int i=s;i<e;i++)
#define repe(i,s,e) for(int i=s;i<=e;i++)
#define CL(a,b) memset(a,b,sizeof(a))
#define IN(s) freopen(s,"r",stdin)
#define OUT(s) freopen(s,"w",stdout)
const ll ll_INF = ((ull)(-1))>>1;
const double EPS = 1e-8;
const int INF = 100000000;
int bit[5000];
ll quick(ll base, ll x)
{
    ll ret=1;
   // printf("## b=%lld x=%lld ",base,x);
    while(x)
    {
        if(x&1)
            ret=ret*base;
        base*=base;
        x/=2;
    }
   // printf("ret=%lld
",ret); return ret; } ll cal(ll i, ll m) { ll ret=0; // printf("###########%lld
",i); while(i) { ret+=(i%m)*(i%m);//quick(i%m,m); i/=m; } //putchar('
'); return ret; } int main() { //IN("hdu4432.txt"); ll n,m,s,ans,tmp; char c; while(~scanf("%I64d %I64d",&n,&m)) { s=(ll)sqrt(n*1.0); ans=0; for(ll i=1;i<=s;i++) { if(n%i == 0) { ans+=cal(i,m); if(n!=i*i)ans+=cal(n/i,m); } } //printf("%I64d
",ans); //show(ans,m); int cnt=0; while(ans) { bit[cnt++]=ans%m; ans/=m; } for(int i=cnt-1;i>=0;i--) { putchar( (char)(bit[i]<=9?(bit[i]+'0'):(bit[i]-10+'A')) ); } putchar('
'); } return 0; }