码迷,mamicode.com
首页 > 其他好文 > 详细

余数 2015广工校赛 C 魔幻任务

时间:2015-12-06 17:24:51      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:

 

题目传送门

题意:问n位最小能整除47的数字

分析:打表发现前面都是100000...,后两位就是100000%47后到47的距离,就是快速幂求1000000%47的值,47-它就是后两位

#include <bits/stdc++.h>
using namespace std;

const int A = 47;

int pow_mod(int x, int n, int p)	{
	int ret = 1;
	while (n)	{
		if (n & 1)	ret = 1ll * ret * x % p;
		x = 1ll * x * x % p;
		n >>= 1;
	}
	return ret;
}

int run(int n)	{
	return A - pow_mod (10, n, A);
}

int main(void)	{
	int T;	scanf ("%d", &T);
	while (T--)	{
		int n;	scanf ("%d", &n);
		if (n <= 0)	puts ("-1");
		else if (n == 1)	puts ("0");
		else if (n == 2)	puts ("47");
		else	{
			printf ("1");
			for (int i=1; i<=n-3; ++i)	printf ("0");
			int x = run (n - 1);
			if (x < 10)	printf ("0%d\n", x);
			else	printf ("%d\n", x);
		}
	}

	return 0;
}

  

余数 2015广工校赛 C 魔幻任务

标签:

原文地址:http://www.cnblogs.com/Running-Time/p/5023861.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!