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