⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1987.cpp

📁 hoj 部分题目解题报告 c,cpp或java语言描述
💻 CPP
字号:
/* This Code is Submitted by icycandy for Problem 1987 on 2008-11-10 at 16:06:52 *//*李青峰 ID:qingfenghit*/
#include<stdio.h>
int f(int n,int m)                /*定义一个函数求f(n)模的值*/
{
    if (n<4&&n>0)                 /*当在0到4之间的时候直接特殊情况*/
    {
        return   n%m;
    }

    int   first=1,second=2,third=3;/*用递归的思想对每一次的数据替换,先赋初值*/

    for (int   i=4;i<n;i++)
    {
        int   temp;
        temp=first%m+third%m;      /*执行函数f(n)=f(n-1)=f(n-2)的逐级替换*/
        first=second%m;
        second=third%m;
        third=temp%m;
    }
    return   (first+third)%m;
}


main()
{
    int n,m,answer;               /*answer就是所求的结果模*/
    scanf("%d %d",&n,&m);

    while (m<=10000&&m>=2&&n<=10000)
     {
       if (m==0&&n==0)            /*当输入0 0的时候终止函数*/
        {
            break;
        }


        if (n<0)                  /*当n<0的时候求模的公式*/
            answer=(n%m+m)%m;
        if (n==0)                 /*当n=0的时候的模*/
            answer=0;
        if (n>0)                  /*当n>0的时候用函数f(n)求模*/
        {
            answer=f(n,m);
        }
        printf("%d\n",answer);    /*输出结果*/
        scanf("%d %d",&n,&m);     /*执行多次输入数据*/
    }
    return 0;
}

⌨️ 快捷键说明

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