方法一
#include<stdio.h>
int
main
()
{
???? int
a
,
b
,
n
;
???
while
(
scanf
(
"%d %d %d"
,&
a
,&
b
,&
n
)!=
EOF
&&(
a
+
b
+
n
)!=
0
)
{
?
int
f1
=
1
,
f2
=
1
,
f3
=
1
,
t
,
r
[
8
][
8
]={
0
},
i
,
flag
=
0
,
x
;
???????
? for
(
i
=
3
;
i
<=
n
;
i
++)
? {
????? f3
=(
a
*
f2
+
b
*
f1
)%
7
;
??????
??????? r
[
f1
][
f2
]=
i
;
???????????
?? f1
=
f2
;
f2
=
f3
;
???????????
??? if
(
r
[
f1
][
f2
]&&
flag
==
0
)
??? {
??????????????
????? t
=
i
-
r
[
f1
][
f2
]+
1
;
??????????????
??????? i
=
r
[
f1
][
f2
]-
3
;
??????
?????
?? n
=(
n
-
i
)%
t
+
i
;
?????????
????? if
(
n
==
i
)
n
=
t
+
i
;
????????????????
???? if
(
n
==(
i
+
1
)) {
f3
=
f1
;
break
;}
??
????????? if
(
n
==(
i
+
2
)) {
f3
=
f2
;
break
;}
?????????????
????????? i
+=
2
;
?????????
???????? flag
=
1
;????????????
?????? }??
??????????
? }
????????
???? printf
(
"%d\n"
,
f3
);????
? }
????
? getchar
();
? getchar
();
}
方法二
#include<stdio.h>
#include<string.h>
int main()
{
??? int a,b,n,i;
??? while(1)
??? {
??????? scanf("%d%d%d",&a,&b,&n);
?? if(a==0&&b==0&&n==0) break;
?? int f[1009];
?? f[1]=1;f[2]=1;
?? for(i=3;i<=1008;i++)
?? {
???
??? f[i]=(a*f[i-1]+b*f[i-2])%7;
???
???
?? }
?? printf("%d\n",f[(n-1)%1008+1]);
}
return 0;
}
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
