1987.c

来自「hoj 部分题目解题报告 c,cpp或java语言描述」· C语言 代码 · 共 54 行

C
54
字号
/* This Code is Submitted by icycandy for Problem 1987 on 2008-11-10 at 16:28:53 *//*ID:zhaoxin  密码:********* */
#include <stdio.h>
#include <stdlib.h>
/*递归函数公式*/
int f(int n,int m)
{
    int k[10001]={0,1,2,3};
    int p;
    for (p=4;p<n+1;p++)
    {
        k[p]=k[p-1]%m+k[p-3]%m;
    }
    return k[n];
}
/*输入n、m 求f(n)对m的模。分类:n<0 / n>3 / n<=3&&n>0讨论*/
int main()
{
    int x,y,n,m;

    scanf("%d%d",&n,&m);
    if (m&&n)
    {
        while (1)
        {
            if (n<0)
            {
                printf ("%d\n",(((n%m)+m)%m));
            }
            else if (n>=0)
            {
                if (n<=3)
                {
                    x=n%m;
                    printf("%d\n",x);
                }

                if (n>3)
                {
                    x=f(n,m);
                    y=x%m;
                    printf("%d\n",y);
                }

            }
            scanf("%d %d",&n,&m);
            if (n==0&&m==0)
                break;
        }
    }
    return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?