整除

数论中的整除问题涉及整除的定义,性质,有关整除问题的证明和整除问题的应用等。

先来看两道水题:

(一)hdu 2099 整除的尾数: http://acm.hdu.edu.cn/showproblem.php?pid=2099  题面描述很简单,数据量也不大,正常做即可,但是需要注意的是,输出格式一定要正确,,代码中sum的设定很有必要,可以巧妙的实现数据结尾没有空格而只有回车换行。

#include <iostream>
#include <cstdio>

using namespace std;

int main()
{
    int a,b;
    while(scanf("%d%d",&a,&b)!=EOF)
    {
        if(a==0&&b==0)
        {
            break;
        }
        a=a*100;
        int sum=0;
        for(int i=0;i<=99;i++)
        {
            if((a+i)%b==0)
            {
                sum++;
                if(sum>=2)  //防止PE,注意输出格式
                printf(" %02d",i);
                else
                printf("%02d",i);
            }
        }
        printf("\n");
    }
    return 0;
}

(二)nefu 115 斐波那契的整除: http://acm.nefu.edu.cn/JudgeOnline/problemShow.php?problem_id=115  分析:此题n的范围比较大,斐波那契数列增长速度又较快,正常去做的话,一定会出现数据溢出,但是考虑到斐波那契数列是由递推关系产生的数列,所以采用寻找循环节的方法,打表找循环节代码如下:

#include <iostream>
#include <cstdio>

using namespace std;

int main()
{
    int n;
    int f[50];
    while(scanf("%d",&n)!=EOF)
    {
        f[1]=1;
        f[2]=1;
        for(int i=3; i<=n; i++)
        {
            f[i]=f[i-1]+f[i-2];
            if(f[i]%12==0)
            {
                printf("YES\n");
            }
            else if(f[i]%4==0)
            {
                printf("4\n");
            }
            else if(f[i]%3==0)
            {
                printf("3\n");
            }
            else
            {
                printf("NO\n");
            }
        }
    }
    return 0;
}
可以发现题面描述恰好满足12为循环节;且fn能被3整除当且仅当n可以被4整除;fn能被4整除当且仅当n可以被6整除;fn能被12整除当且仅当n可以被12整除。最终代码实现如下:

#include <iostream>
#include <cstdio>

using namespace std;

int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        if(n%12==0)
        {
            printf("YES\n");
        }
        else if(n%4==0)
        {
            printf("3\n");
        }
        else if(n%6==0)
        {
            printf("4\n");
        }
        else
        {
            printf("NO\n");
        }
    }
    return 0;
}



你可能感兴趣的:(整除)