首先要了解整除的基本性质:
1.若a整除b且a整除c,则对任意的x,y有a整除xb+yc。
2.若a整除b且b不为0,则绝对值a小于等于绝对值b。
3.若a整除b,则ca整除cb(c不为0)。
4.若a整除b且b整除a,则a=±b。
5.若a整除b且b整除c,则a整除c。
下面来看一道简单题nefu115
题目链接:http://acm.nefu.edu.cn/JudgeOnline/problemShow.php?problem_id=115
Description
已知斐波那契数列有如下递归定义,f(1)=1,f(2)=1, 且n>=3,f(n)=f(n-1)+f(n-2),它的前几项可以表示为1, 1,2 ,3 ,5 ,8,13,21,34…,现在的问题是想知道f(n)的值是否能被3和4整除,你知道吗?
Input2
输入数据有若干组,每组数据包含一个整数n(1<n<1000000000)。
Output
对应每组数据n,若 f(n)能被3整除,则输出“3”; 若f(n) 能被4整除,则输出“4”;如果能被12整除,输出“YES”;否则输出“NO”。
Sample Input
4 6 7 12
Sample Output
3 4 NO YES
则推出能整除12时,f(n)能整除12;(4和6的最小公倍数是12)
浅显易懂的AC代码:
#include<cstdlib>
#include<iostream>
using namespace std;
int main(int arge,char *argv[])
{
int n;
while(cin>>n)
{
if(n%12==0)
cout<<"YES"<<endl;
else
{
if(n%4==0)
cout<<"3"<<endl;
else
if(n%6==0)
cout<<"4"<<endl;
else
cout<<"NO"<<endl;
}
}
return 0;
}
再来看一道经典简单题hdu2099
题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=2099
Problem Description
一个整数,只知道前几位,不知道末二位,被另一个整数除尽了,那么该数的末二位该是什么呢?
Input
输入数据有若干组,每组数据包含二个整数a,b(0<a<10000, 10<b<100),若遇到0 0则处理结束。
Output
对应每组数据,将满足条件的所有尾数在一行内输出,格式见样本输出。同组数据的输出,其每个尾数之间空一格,行末没有空格。
Sample Input
200 40 1992 95 0 0
Sample Output
00 40 80 15
简单AC代码如下二种。这种简单题能AC就是好方法注意下输出格式的空格
一:
#include <stdio.h>
int main(void)
{
int i;
int a, b;
int c;
while (scanf("%d%d", &a, &b), a + b)
{
for (c = i = 0; i < 100; i++)
{
if ((a * 100 + i) % b == 0)
printf(c++ ? " %02d" : "%02d", i);
}
putchar('\n');
}
}
二:
#include<cstdlib>
#include<iostream>
using namespace std;
int main(int argc,char *argv[])
{
int a,b,sum;
while(cin>>a>>b)
{
if(a==0&&b==0)
break;
a=a*100;
sum=0;
for(int i=0;i<=99;i++)
if((a+i)%b==0)
{
sum++;
if(sum>1)
printf(" %02d",i);
else
printf("%02d",i);
}
putchar('\n');
}
}