hdu 4432 Sum of divisors(模拟)
2014-10-28 11:05
253 查看
水题。
先根号n分解因数,再进行简单的进制转换。
坑:有10~16进制情况,要输出ABCDEF,开始没看见wa了。
代码:
先根号n分解因数,再进行简单的进制转换。
坑:有10~16进制情况,要输出ABCDEF,开始没看见wa了。
代码:
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <vector> using namespace std; #define LL long long vector <int> Div; char c[10000]; void solve(LL n){ int k=sqrt(n); for(int i=1;i<=k;i++){ if(n%i==0){ Div.push_back(i); if(i!=(n/i)) Div.push_back(n/i); } } } LL Get(LL n,int m){ LL res=0; while(n>0){ int tmp=n%m; LL T=tmp*tmp; res+=T; n/=m; } return res; } int change(LL n,int m){ LL res=0; int i=0; while(n>0){ LL tmp=n%m; char tc; if(tmp==10) tc='A'; else if(tmp==11) tc='B'; else if(tmp==12) tc='C'; else if(tmp==13) tc='D'; else if(tmp==14) tc='E'; else if(tmp==15) tc='F'; else tc=char(tmp+'0'); c[i]=tc; n/=m; i++; } i--; return i; } int main(){ int m; LL n; while(~scanf("%I64d%d",&n,&m)){ Div.clear(); solve(n); LL res=0; for(int i=0;i<Div.size();i++){ res+=Get(Div[i],m); } int len=change(res,m); for(int i=len;i>=0;i--){ printf("%c",c[i]); } printf("\n"); } return 0; }
相关文章推荐
- HDU—— 4432 Sum of divisors
- hdu 4432 Sum of divisors(十进制转其他进制)
- hdu 4432 Sum of divisors
- hdu-4432-Sum of divisors
- HDU:4432 Sum of divisors
- HDU-#4432 Sum of divisors(模拟)
- hdu 4432 Sum of divisors
- HDU 4432 Sum of divisors (进制转换模板)
- HDU 4432 Sum of divisors (进制模拟)
- HDU 4432 Sum of divisors (进制模拟)
- HDOJ4432 Sum of divisors(暴力)
- 哈理工校园编程练习赛杭电 acm 4432 G.Sum of divisors
- HDOJ4432 Sum of divisors(暴力)
- HDU 4432 Sum of divisors (进制模拟)
- 【HDU】3415 Max Sum of Max-K-sub-sequence
- hdu - 3415 Max Sum of Max-K-sub-sequence
- hdu 3415 Max Sum of Max-K-sub-sequence
- hdu 4392 Maximum Number Of Divisors
- HDU 3415 Max Sum of Max-K-sub-sequence
- hdu 3415 Max Sum of Max-K-sub-sequence题解