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; }
时间: 2024-10-07 00:04:16