http://acm.hdu.edu.cn/showproblem.php?pid=4432
6分钟写的代码,一上午去调试,,
哎,一则题目没看懂就去写了,二则,哎,,恶心了。在坚持几天然后ACM退役。想当初一直想着regional拿奖,然后在保研的时候有个更美丽的简历,卧槽。可是,事实上喜欢的是静下心,把一块知识好好弄懂。看着自己一点点由不会到会,由不熟到熟练,并且在这个过程中总结一些思考问题的方法,能把这样的思维应用于其它
可是----唉。急功近利式地学,老想着快,一没思路就去看题解,然后平均每两天一场比赛,外加队友之间相互抱怨猜忌。哎,恶心了,,真的。做完明天的排位,可能就该退掉了,最后几次排位再好好去做做,然后滚蛋
以后还是先好好试下例子再去写,那个hint的解释我发现我想了三个版本号都没对,擦,。
#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\n",ret);
return ret;
} ll cal(ll i, ll m)
{
ll ret=0;
// printf("###########%lld\n",i);
while(i)
{
ret+=(i%m)*(i%m);//quick(i%m,m);
i/=m;
}
//putchar('\n');
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\n",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('\n');
}
return 0;
}