HDU 2099 整除的尾数 NEFU 115 斐波那契的整除

来源:互联网 发布:电话轰炸机原理知乎 编辑:程序博客网 时间:2024/05/21 04:26

【定义1】 设a,b 是两个整数,且b!=0,则存在唯一的整数q和r,使

                                 a=q*b+r     ( 0 <= r < |b| )

                  这个式子叫带余除法,并记余数 r = a mod b 。

                  例如:5 mod 2 = 1,-14 mod 5 =3

【整除的应用】

 例1:整除的尾数 (HDU 2099) 点击打开链接

Problem Description
一个整数,只知道前几位,不知道末二位,被另一个整数除尽了,那么该数的末二位该是什么呢?

Input
输入数据有若干组,每组数据包含二个整数a,b(0<a<10000, 10<b<100),若遇到0 0则处理结束。

Output
对应每组数据,将满足条件的所有尾数在一行内输出,格式见样本输出。同组数据的输出,其每个尾数之间空一格,行末没有空格。

Sample Input
200 401992 950 0

Sample Output
00 40 8015

【分析】

此题属于入门级的题。从0~99进行枚举后两位,再加上整数a*100后对b取余即可。

【代码】        

#include <stdio.h>#include <math.h>int main(){    int a,b;    while(scanf("%d%d",&a,&b)!=EOF)    {        if(a==0&&b==0)            break;        int i,count=0;        a*=100;        for(i=0;i<=99;i++)        {            if((a+i)%b==0)            {                count++;                if(count>1)                printf(" %02d",i);   /*  %02d 表示数字宽度为2,宽度不够在坐边补0  例如:3 输出 03  */                else                printf("%02d",i);            }        }        printf("\n");    }    return 0;}

 例2:斐波那契的整除 (NEFU 115)点击打开链接

description

<span style="font-size:18px;">已知斐波那契数列有如下递归定义,f(1)=1,f(2)=1, 且n&amp;gt;=3,f(n)=f(n-1)+f(n-2),它的前几项可以表示为1, 1,2 ,3 ,5 ,8,13,21,34…,现在的问题是想知道f(n)的值是否能被3和4整除,你知道吗?</span>

input

<span style="font-size:18px;">输入数据有若干组,每组数据包含一个整数n(1&amp;lt; n &amp;lt;1000000000)。</span>

output

<span style="font-size:18px;">对应每组数据n,若 f(n)能被3整除,则输出“3”; 若f(n) 能被4整除,则输出“4”;如果能被12整除,输出“YES”;否则输出“NO”。</span>

sample_input

<span style="font-size:18px;">46712</span>

sample_output

<span style="font-size:18px;">34NOYES</span>
【分析】

  这道题的数据量很大,如果直接计算会溢出,考虑是否存在一定的规律性。不难发现:fn能被3整除,当且仅当n可以被4整除;fn能被4整除,当且仅当n可以被6整除;所以:fn能被12整除,当且仅当n可以被12(4和6的最小公倍数)整除;

【代码】

#include <stdio.h>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;}





0 0