假设您输入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;
}
我得到无限循环。
答案 0 :(得分:2)
问题(现在)要求:
b的下一个倍数是不小于?
使用a
和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;
}
这是原始评论适用的答案。
答案 1 :(得分:1)
return (((a-1) / b )+1) * b;
始终返回b的倍数。增加整数红利以获得比原始红色大的倍数 - 从原始红色减去一个,因为我们希望“不小于”而不是“大于”a
答案 2 :(得分:0)
int nextMultiple(int a,int b)
{
if(a%b == 0) return a;
return a+(b-(a%b));
}
所以如果a = 15 b = 6
ans是
=15+(6-(15%6))
=15+(6-(3))
=15+3
=18
答案 3 :(得分:0)
我认为你想要一个do - while
迭代循环,所以我会给出一个替代答案。
如何找到不小于A的下一个B?
显然这段代码比David大。
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 );
}