1.N位数字与数组的转化
将N位数字的每一位存储在数组中
void to_array(int n, int num[])
{
for (int i = 0; i < N; i++)
{
num[i] = n % 10;
n = n / 10;
}
}
将数组中的数字组成N位数字
int to_number(int num[])
{
int sum = 0;
for (int i = 0; i < N; i++)
{
sum = sum*10 + num[i];
}
return sum;
}
2.最大公约数和最小公倍数
求a,b的最大公约数gcd(a,b)常用辗转相除法
gcd(a, b)=gcd(b, a%b)
又0和任意一个整数的最大公约数都是a,则递归边界是gcd(a,0)=a。
int gcd(int a, int b)
{
if (b == 0) return a;
else return gcd(b, a % b);
}
最小公倍数lcm(a, b)求解是在最大公约数的基础上,当求得最大公约数d后,可以马上得到a和b的最小公倍数是ab/d,但是由于ab可能会溢出,因此更恰当的写法是a/bd。
3.输入多组数据
输入多组数据,每组两个
while(scanf("%d%d", &m, &n) != EOF)
{...}
网友评论