hdu6108 小C的倍数问题

来源:互联网 发布:广寒仙子皎月淘宝价格 编辑:程序博客网 时间:2024/04/29 05:02

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6108
题意:中文题
解析:首先你要明白为什么3的倍数满足,各位数求和也为3的倍数,假设有一个三的倍数是abc,那么其实这个数用进制展开后,为
102*a+10*b+c = (102-1)*a+(10-1)*b+(a+b+c)
由于前两项都是3的倍数,所以需要a+b+c也为3的倍数
那么对于在p进制下,假设存在了一个各位数的和为B的倍数,但是你也必须保证(pn-1)也为B的倍数,由于这个是一定可以拆出(p-1)这一项的,所以只需要求(p-1)的倍数个数即可

#include <bits/stdc++.h>using namespace std;int main(void){    int t;    scanf("%d",&t);    while(t--)    {        int a;        scanf("%d",&a);        a--;        int ans = 2;        for(int i=2;i*i<=a;i++)        {            if(a%i==0)            {                ans++;                if(i*i!=a)                    ans++;            }        }        printf("%d\n",ans);    }    return 0;}
原创粉丝点击