关闭

UVa 974 - Kaprekar Numbers

243人阅读 评论(0) 收藏 举报
分类:

題目:一個數字的平方可以切割成兩個非零的數字,他們的和是這個數字本身,

           求一個區間中這種數字的個數。

分析:數論。簡單題。直接打表計算,查詢輸出即可。

說明:╮(╯▽╰)╭。

#include <cstring>
#include <cstdio>

int visit[40004];
int bits[9] = {1000000000, 100000000, 10000000, 1000000, 100000, 10000, 1000, 100, 10};

int test(int value)
{
	for (int i = 0; i < 9; ++ i) {
		int a = value*value/bits[i];
		int b = value*value%bits[i];
		if (a && b && a+b == value)
			return 1;
	}
	return 0;
}

int main()
{
	memset(visit, 0, sizeof(visit));
	for (int i = 2; i < 40001; ++ i)
		visit[i] = test(i);
		
	int n, a, b;
	while (~scanf("%d",&n))
	for (int t = 1; t <= n; ++ t) {
		scanf("%d%d",&a, &b);
		printf("case #%d\n",t);
		int count = 0;
		for (int i = a; i <= b; ++ i)
			if (visit[i]) {
				printf("%d\n",i);
				count ++;
			}
		if (!count) 
			printf("no kaprekar numbers\n");
		if (t < n) printf("\n");
	}
	
	return 0;
}


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:847106次
    • 积分:19193
    • 等级:
    • 排名:第451名
    • 原创:1119篇
    • 转载:0篇
    • 译文:0篇
    • 评论:246条
    文章分类
    最新评论