zoukankan      html  css  js  c++  java
  • HDU 4432 Sum of divisors 2012 Asia Tianjin Regional Contest

    解题报告:

    题目大意:输入两个数n和m,要求按一下步骤做,首先将n转化成m进制的数,然后求这个数的每一位的平方和。最后转化成m进制再显示出来。

    模拟题,要注意的一点是这个m的范围是2到16,所以当m超过10时要记得转化为对应的字母表示。

     1 #include<cstdio>
     2 #include<cmath>
     3 typedef __int64 ll;
     4 ll n,m;
     5 char an[17]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
     6 ll add(ll N,ll M) {
     7     ll sum=0;
     8     while(N) {
     9         ll d=N%M;
    10         sum+=d*d;
    11         N/=M;
    12     }
    13     return sum;
    14 }
    15 void print(ll N,ll M) {
    16     char a[10005];
    17     int i=1;
    18     while(N) {
    19         a[i++]=an[N%M];
    20         N/=M;
    21     }
    22     for(int j=i-1;j>=1;--j)
    23     printf("%c",a[j]);
    24     printf("\n");
    25 }
    26 
    27 int main( ) {
    28     while(scanf("%I64d%I64d",&n,&m)!=EOF) {
    29         ll sum=0;
    30         for(ll i=1;i<=sqrt(n);++i)
    31         if(n%i==0) {
    32             sum+=add(i,m);
    33             if(i*i!=n)
    34             sum+=add(n/i,m);
    35         }
    36         print(sum,m);
    37     }
    38     return 0;
    39 }
    View Code
  • 相关阅读:
    14.RabbitMQ
    13.跨域
    12.EF
    11.Redis
    GitHub获取用户ID
    10.AOP
    第26节课:pytest结合Allure操作
    第25节课:pytest测试框架
    第二十四节课:requests爬虫实战
    第二十三节课:正则表达式re模块:
  • 原文地址:https://www.cnblogs.com/xiaxiaosheng/p/3091507.html
Copyright © 2011-2022 走看看