假设你输入A = 15,B = 6,答案是18。我需要什么算法?
这是我尝试的,但它不起作用:
#include <stdio.h>
int main() {
int a, b;
scanf("%d %d", &a, &b);
for ( ; a % b != 0; a++ ) {
if ( a % b == 0 ) {
printf("%d\n", a);
return a;
}
}
return 0;
}
我得到无限循环。
假设你输入A = 15,B = 6,答案是18。我需要什么算法?
这是我尝试的,但它不起作用:
#include <stdio.h>
int main() {
int a, b;
scanf("%d %d", &a, &b);
for ( ; a % b != 0; a++ ) {
if ( a % b == 0 ) {
printf("%d\n", a);
return a;
}
}
return 0;
}
我得到无限循环。
问题(现在)要求:
b 的下一个不小于 a 的倍数?
使用你的符号a
and b
,你可以直接写成这样:
int NextMultipleUp(int a, int b)
{
int r = a % b;
if (r == 0)
return a;
else
return a + b - r;
}
最初问的问题
a的下一个不大于b的倍数
为此,答案是
int NextMultipleDown(int a, int b)
{
return b - b % a;
}
这是原始评论适用的答案。
return (((a-1) / b )+1) * b;
总是返回 b 的倍数。增加整数除数以获得大于原始 a 的倍数 - 从原始值中减去一个,因为我们想要“不小于”而不是“大于”a
int nextMultiple(int a,int b)
{
if(a%b == 0) return a;
return a+(b-(a%b));
}
所以如果 a=15 b=6
答案是
=15+(6-(15%6))
=15+(6-(3))
=15+3
=18
我认为你想要一个do - while
迭代循环,所以我会给出一个替代答案。
如何找到不小于 A 的 B 的下一个倍数?
显然这段代码比大卫的慢。
int main ( void ){
int a, b, c;
long int result;
scanf("%d %d", &a, &b);
c = 0;
do {
result = b * c;
c++;
} while ( result < a );
printf( " The number is: %d \n", result );
}