Hduoj3184【数学题】

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
int main()
{
	int i, j, k, t;
	scanf("%d", &t);
	while(t--)
	{
		int a, b;
		scanf("%d%d", &a, &b);
		if(a == 1)
		{
			if(b >= 10)
			printf("Impossible!\n");
			else
			{
				for(i = 9; i >= 1; --i)
				{
					if(i % b == 0)
					{
						printf("%d\n", i);
						break;
					}
				}
			}
		}
		else
		{
			if(b == 1 || b == 9 || b == 3)
			k = 9;
			else if(b == 2)
			k = 8;
			else if(b == 5)
			k = 5;
			else if(b == 6)
			k = 6;
			else
			k = 0;
			for(i = 1; i < a; ++i)
			printf("9");
			printf("%d\n",k);
		}
	}	
	return 0;
}
//1 2 3 5 6 9 10 15 18 30 45 90


题意:给出Construct a number N follows three below restrictions:
1. T-1 <= Log10N < T, ( 0 < T <= 100 )
2. 90 mod b = 0
3. N mod b = 0
三个约束条件,求N。

思路:首先从2了可以看出b只有上面我注释的几个数可选,其次就是N的范围是10^T~10^T-1 ,因为b可以被90整除,所以对于最大的N必定是10^T - 10 ~ 10^T,对于不同的b,N的值略微有点不同,其次就是不存在的情况就是当T = 1的时候,如果b>=10, 那么很明显N不存在。

你可能感兴趣的:(Hduoj3184【数学题】)