Dertouzos Accepts: 205 Submissions: 1040 Time Limit: 7000/3500 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) 问题描述 正整数$x$称为$n$的positive proper divisor, 当且仅当$x | n$并且$1 \le x < n$. 例如, 1, 2, 和3是6的positive proper divisor, 但是6不是. Peter给你两个正整数$n$和$d$. 他想要知道有多少小于$n$的整数, 满足他们的最大positive proper divisor恰好是$d$. 输入描述 输入包含多组数据, 第一行包含一个整数$T$ $(1 \le T \le 10^6)$表示测试数据组数. 对于每组数据: 第一行包含两个整数$n$和$d$ $(2 \le n, d \le 10^9)$. 输出描述 对于每组数据, 输出一个整数. 输入样例 9 10 2 10 3 10 4 10 5 10 6 10 7 10 8 10 9 100 13 输出样例 1 2 1 0 0 0 0 0 4 在BC上AC的第一道题,题意很好理解,但是暴力解的话,容易超时。 #include<stdio.h> int f(__int64 m) { int i=2; while(m%i!=0) { i++; } return m/i; } //找出一个数的<span style="font-family: Arial, Helvetica, sans-serif;">最大positive proper divisor</span> int main() { int t; __int64 n,d; scanf("%d",&t); while(t--) { __int64 sum=0; scanf("%I64d%I64d",&n,&d); for(__int64 i=2*d;i<n;) //找规律 { if(f(i)==d) sum++; i=i+d; } printf("%I64d\n",sum); } return 0; }