NYOJ216 A problem is easy

原题链接

原式可以化成(i + 1) * (j + 1) = N + 1; 因为i, j > 0, 所以问题转换成了求N + 1的大于等于2的所有因子个数(不包括本身)。比如N = 5,则因子为2, 3,但是只属于一种情况,因为2*3 = 3*2.。要用sqrt,否则易超时。

附ac代码:

#include <stdio.h>
#include <math.h>

int main(){
	int t, count, m;
	long long n, i;
	scanf("%d", &t);
	while(t-- && scanf("%lld", &n)){
		count = 0;
		++n;
		m = (int)sqrt(n);
		for(i = 2; i <= m; ++i)
			if(n % i == 0) ++count;
		printf("%d\n", count);
	}
	return 0;
}


posted on 2014-02-15 10:23  长木Qiu  阅读(133)  评论(0编辑  收藏  举报