2 chenyonken chenyonken 于 2016.02.04 16:17 提问

(杭电1005)为什么第二个结果错了,是5不是1:a %= 7,b %= 7;这一句是什么作用

#include
int main()
{
int f[53], i, a, b, n;
while(scanf("%d%d%d", &a, &b, &n))
{
if (a ==0&&b ==0&&n == 0)
break;
if ((n == 1 )|| (n == 2))

    {
        printf("1\n");
        continue;
    }
    f[1] = 1,f[2] = 1;
    a %= 7,b %= 7;
    for (i = 3; i <= 52; i++)
    {
        f[i] = (a*f[i - 1] + b*f[n - 2]) % 7;
        if ((f[i] == 1) && (f[i - 1] == 1))break;
    }
    i = i - 2;
    n %= i;
    f[0] = f[i];
    printf("%d\n", f[n]);
}

}图片说明


1个回答

qq_27183003
qq_27183003   Ds   Rxr 2016.02.04 16:30
已采纳
 f[i] = (a*f[i - 1] + b*f[n - 2]) % 7;//n错了吧?是i?
chenyonken
chenyonken 恩,对了,是这样,能顺便跟我说一下为什么要是a,b的值小于7吗
2 年多之前 回复
qq_27183003
qq_27183003 把题目贴出来看看。
2 年多之前 回复
chenyonken
chenyonken 回复ysuwood: 为什么要让他们小于7啊
2 年多之前 回复
chenyonken
chenyonken 回复ysuwood: 为什么要让他们小于7啊
2 年多之前 回复
chenyonken
chenyonken 回复ysuwood: 为什么要让他们小于7啊
2 年多之前 回复
chenyonken
chenyonken 回复ysuwood: 为什么要让他们小于7啊
2 年多之前 回复
qq_27183003
qq_27183003 a %= 7,b %= 7;//使得a,b都小于7
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
【HDU1005】Number Sequence(矩阵快速幂)
题目链接 题目大意: f[1] = 1,f[2] = 1,f[n] = (a*f[n-1]+b*f[n-2])%7(n > 2) 给你a,b。求f[n]。网上好像都是找规律的。 我想用下矩阵求递推式,类似矩阵快速幂求斐波那契。 搞清楚原理后,只要稍微改动下就可以了。我们可以构造矩阵 (f[3]f[2])=(a b1 0)(f[2]f[1])\left(^{f[3
杭电OJ(HDOJ)1005题:Number Sequence(规律递推)
题意: 有这样一个序列f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7.输入三个整数:A,B,N (1 示例输入: 1 1 3 1 2 10 0 0 0 示例输出: 2  5 解决方案: f(n)=(A*f(n-1)+B*(f-2))%7,计算过程中A和B的一直没有变,在变的是f(n-1)和f(n-2
利用线程的知识,要求打印的结果为:1 2 A 3 4 B 5 6 C 7 8 D 9 10 11 12 ... 52 E F G H I J K ... X Y Z
<br />/**<br /> * 要求打印的结果为:1 2 A 3 4 B 5 6 C 7 8 D 9 10 11 12 ... 52 E F G H I J K ... X Y Z<br /> * <br /> * @author user<br /> * <br /> */<br />public class MyTestThread2 {<br /> public static void main(String[] args) {<br />  Object obj = new Object();<
51nod 1284:2 3 5 7的倍数 容斥原理
1284 2 3 5 7的倍数 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题  收藏  关注 给出一个数N,求1至N中,有多少个数不是2 3 5 7的倍数。 例如N = 10,只有1不是2 3 5 7的倍数。 Input 输入1个数N(1  Output 输出不是2 3 5 7的
51nod 1005 大数加法 大数运算
大数运算 修改 隐藏话题 1005 大数加法 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 给出2个大整数A,B,计算A+B的结果。 Input 第1行:大数A 第2行:大数B (A,B的长度  Output
把a数组中的n个数和b数组中逆序的n个数一一相减,结果存在c数组中。 例如: 当a数组中的值是:1、3、5、7、8 b数组中的值是:2、3、4、5、8 程序执行后,c
#include&amp;lt;stdio.h&amp;gt;int main(){ int i,j,n; scanf(&quot;%d&quot;,&amp;amp;n); int a[100],b[100],c[100]; printf(&quot;请输入数组a:\n&quot;);  for(i=0;i&amp;lt;n;i++)    scanf(&quot;%d&quot;,&amp;amp;a[i]); printf(&quot;请输入数组b:\n&quot;);   for(i=0;i&
关于一道面试题【字符串 '1 + (5 - 2) * 3',怎么算出结果为10,'eval'除外】
最近徘徊在找工作和继续留任的纠结之中,在朋友的怂恿下去参加了一次面试,最后一道题目是: 写一个函数,输入一个字符串的运算式,返回计算之后的结果。例如这样的: ‘1 + (5 - 2) * 3’,计算出结果为10 最开始看到这个题目的时候,我脑中的第一反应就是eval,真的太直接了。但是我就不明白为什么这竟然是最后一道题目,我也不知道为什么还会考eval的运用,因此当时也很犹豫要不要用e...
1-20中,3的倍数输出a,5的倍数输出b,3和5的倍数输出ab
#1-20中,3的倍数输出a,5的倍数输出b,3和5的倍数输出abfor i in range(1,21):    if i%3==0 and i%5==0:        print('ab')    elif i%3==0:        print('a')    elif i%5==0:        print('b')    else:        print(i)执行结果12a4b...
51nod点头网-1284 2,3,5,7的倍数
给出一个数N,求1至N中,有多少个数不是2 3 5 7的倍数。 例如N = 10,只有1不是2 3 5 7的倍数。 Input 输入1个数N(1 OutPut 输出不是2 3 5 7的倍数的数共有多少。 Input示例 10 Output示例 1 此题是典型的容斥原理题,一开始理解错误,写成了丑数题,后来才发现; 要求不是2,3,5,7的倍数的个数,可以先求出2,3,5,7的
Java之“& 0x1”
感觉这是一个与byte类型数据相关的yunsuanfa