您的位置:首页 > 其它

2017.2.12【初中部 GDKOI】模拟赛B组 T1:圆盘染色

2017-02-13 19:28 232 查看
【NOIP模拟】圆盘染色(color)

Description

将一个圆盘分为n个扇形,每个扇形可涂红、黄、蓝三种颜色中的一种,但相邻两个扇形的颜色必须不同,问有多少中涂法。

Input

第一行一个数t表示t组数据,接下来t行每行一个数n表示分成n个扇形。

Output

对于组数据输出一个数表示染色的方案数,结果模12345678。

Sample Input

2

1

2

Sample Output

3

6

Data Constraint

数据范围:

30%的数据t<=10,n<=100。

100%的数据t<=10000,n<=10^9。

题解:

这里首先将一个做题方法。发现任何暴力或不像高级算法的数学题,请想想找规律。

这个找规律就是打一个暴力,然后一个一个去把各种样例以正确的暴力求出来,再手玩一下就可以发现规律了。这是一种很好用的规律题方法。

本题就按照以上的方法求出一些规律就手玩一下。找出一个规律:当n为奇数时,输出(2n−2)。当n为偶数时,输出(2n+2)。当n=1时特判。A了。

标程:

var
t,i,j,k,l,n,m:longint;
function qpower(a,b,n:int64):int64;
var
t,y:int64;
begin
t:=1;
y:=a;
while b<>0 do
begin
if(b and 1)=1 then
t:=t*y mod n;
y:=y*y mod n;
b:=b div 2;
end;
exit(t);
end;
begin
assign(input,'color.in');reset(input);
assign(output,'color.out');rewrite(output);
readln(t);
for m:=1 to t do
begin
readln(n);
if n=1 then
begin
writeln(3);
end
else
if n=2 then
begin
writeln(6);
end
else
begin
i:=qpower(2,n,12345678);
if n mod 2=1 then
writeln((i-2) mod 12345678)
else
writeln((i+2) mod 12345678);
end;
end;
close(input);close(output);
end.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: