补完题?不存在的。
这么久了,还是一条咸鱼,看一堆乱七八糟的东西,写一堆没用的水题,一点进步都没有,还是那么菜,菜的掉渣。
这个百毒之星初赛A还会写两道最简单的水题,初赛B一点也不会,菜的难过。。。
最近看的dp和kmp,垂死挣扎,一点一点看吧。。。
cf打的还是那么弱,一点进步都没有。。。
好久没写博客了,最近写的都是水题,都没有写博客的必要,但是还是来水一水(;´д`)ゞ,要不就没有写博客的习惯了。
吐槽百毒之星,比赛的时候1005交上去,莫名其妙Output Limit Exceeded,然而晚上在杭电一点没改的又重新交了一次,过了?!过了,了。。。
1001:小C的倍数问题
Time Limit: 2000/1000 MS (Java/Others)
Memory Limit: 32768/32768 K (Java/Others)
Problem Description
根据小学数学的知识,我们知道一个正整数x是3的倍数的条件是x每一位加起来的和是3的倍数。反之,如果一个数每一位加起来是3的倍数,则这个数肯定是3的倍数。
现在给定进制P,求有多少个B满足P进制下,一个正整数是B的倍数的充分必要条件是每一位加起来的和是B的倍数。
Input
第一行一个正整数T表示数据组数(1<=T<=20)。
接下来T行,每行一个正整数P(2 < P < 1e9),表示一组询问。
Output
对于每组数据输出一行,每一行一个数表示答案。
Sample Input
1
10
Sample Output
3
题意一开始怎么都没看懂,不知道是我的脑回路和出题人不一样,还是因为我语文不好。。。还是大佬给我说的题意才理解的。
就是找1到p-1的因数的个数,比如10进制,就是0,1,2,3,4,5,6,7,8,9,哎呀,就是那个意思,想想就理解了。。。
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
ll t,n,sum;
scanf("%lld",&t);
while(t--){
scanf("%lld",&n);
sum=;n--;
for(ll i=;i<=(ll)sqrt(n);i++){
if(n%i==&&n/i==i)sum++;
else if(n%i==&&n/i!=i)sum+=;
}
printf("%lld\n",sum);
}
return ;
}