首页 > 试题广场 >

小红的正整数构造

[编程题]小红的正整数构造
  • 热度指数:14583 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}给定一个闭区间 [l,r] 以及一个正整数 x
\hspace{15pt}请在区间内找到一个整数 y,满足 yx 的倍数,即 y\equiv 0\pmod{x}
\hspace{15pt}若存在多个满足条件的 y,输出任意一个;若不存在,输出 -1

输入描述:
\hspace{15pt}在一行上输入三个整数 l,r,x\left(1\leqq l\leqq r\leqq 10^2;\ 1\leqq x\leqq 10^2\right)——区间左右端点与基准倍数。


输出描述:
\hspace{15pt}若存在满足条件的整数 y,在一行上输出 y;否则输出 -1
\hspace{15pt}如果存在多个答案,可以输出任意一个,系统会自动判断其正确性。
示例1

输入

6 10 3

输出

6

说明

69 均为 3 的倍数,本题输出了 6
示例2

输入

8 9 5

输出

-1

说明

区间内不存在 5 的倍数,因此输出 -1
l,r,x = map(int,input().split( ))
result = -1
for i in range(l,r+1):
    if i % x == 0:
      result = i
print(result)

发表于 2025-03-03 15:10:21 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        int l = in.nextInt();
        int r = in.nextInt();
        int x = in.nextInt();
        int result = -1;
        for (int i = l; i <= r; i++) {
            if (i % x == 0) {
                result = i;
                break;
            }
        }
        System.out.print(result);
    }
}

发表于 2025-08-26 19:24:11 回复(0)
l, r, x = map(int, input().split())
y = l + x - l % x
print(y if y <= r else -1)

发表于 2026-01-17 20:43:44 回复(1)
l,r,x=map(int,input().split())
for i in range(l,r+1):
    if i% x==0:
        print(i)
        break
    elif (i % x) != 0 and i ==r:
        print(-1)
        break
发表于 2025-08-12 15:35:52 回复(0)
package main

import (
    "fmt"
)

func main() {
    var l, r, x int
    fmt.Scan(&l,&r,&x)
    v := -1
    if l%x == 0 {
        v = l
    } else {
        v = (l/x + 1) * x
        if v > r {
            v = -1
        }
    }
    fmt.Println(v)

}


发表于 2025-05-13 17:36:39 回复(0)
#include <stdio.h>

int main() {
   int l,r,x;
   scanf("%d %d %d",&l,&r,&x);
   int y=-1;
   for(int i=l;i<=r;i++)
   {
       if(i%x==0){
          y=i;
          break;
       }
   }
   printf("%d",y);
}
发表于 2026-01-31 14:16:05 回复(0)
#include <iostream>
using namespace std;
#include <vector>

int main(){
    vector<int> v;
    int l,r,x;
    cin >> l >> r >> x;
    for(int i = l; i <= r; ++i) v.push_back(i);
    for(const auto& val : v){
        if(val % x == 0){
            cout << val << endl;
            return 0;
        }
    }
    cout << -1 << endl;
    return 0;
}

发表于 2026-01-31 01:06:43 回复(0)
#include <stdio.h>

int main() {
int a, b,c,count=0;
scanf("%d %d %d",&a,&b,&c);
for(int i=a;i<=b;i++){
if(i%c==0){
printf("%d",i);
count=1;
break;
}
}
if(count==0){
printf("-1");
}
}
发表于 2026-01-28 18:33:34 回复(0)
#include <iostream>
using namespace std;

int main() {
    int l, r, x;
    cin >> l >> r >> x;

    // 计算 >= l 的最小 x 倍数
    int y = ((l + x - 1) / x) * x;

    if (y <= r) {
        cout << y << endl;
    } else {
        cout << -1 << endl;
    }

    return 0;
}

  • 找到大于等于 l 的最小 x 倍数
    公式:y = ((l + x - 1) / x) * x
    (这是向上取整的常用写法,避免浮点运算)
  • 判断这个y是否 ≤ r:
    • 若y ≤ r→ 输出y
    • 否则 → 输出-1
  • 发表于 2026-01-23 14:57:57 回复(0)
    l,r,x=map(int,input().split())
    cha=x-(l%x)
    if l+cha>r:
        print(-1)
    else:
        print(l+cha)
    不枚举
    发表于 2026-01-12 20:15:55 回复(0)
    public class Main {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            String[] s = scanner.nextLine().split(" ");
            boolean flag = false;
            int x = Integer.parseInt(s[s.length - 1]);
            for (int i = 0; i < s.length - 1; i++) {
                if (Integer.parseInt(s[i]) % x == 0) {
                    System.out.println(Integer.parseInt(s[i]));
                    flag = true;
                    break;
                }
            }
            if (!flag) {
                System.out.println(-1);
            }
        }
    }
    发表于 2026-01-03 19:29:24 回复(0)
    import java.util.Scanner;
    import java.util.stream.LongStream;
    // 注意类名必须为 Main, 不要有任何 package xxx 信息
    public class Main {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            // 注意 hasNext 和 hasNextLine 的区别
            int a = in.nextInt();
            int b = in.nextInt();
            int c = in.nextInt();
            long[] arr = LongStream.rangeClosed(a,b).toArray();
            int res = -1;
            for(long item:arr){
                if(item%c==0){
                    res = (int)item;
                    break;
                }
            }
            System.out.println(res);
        }
    }
    发表于 2025-12-31 10:47:38 回复(0)
    #include <iostream>
    using namespace std;

    int main() {
        int N, M , R;
        cin >> N >> M >> R;
        int flag = 0;
        for(int i = N; i <= M; ++i)
        {
            if(i % R == 0)
            {
                cout << i;
                break;
            }
            flag ++;
        }
        if(flag == M - N + 1)
        {
            cout << "-1";
        }
       
    }
    // 64 位输出请用 printf("%lld")
    我再也不要写石山代码了
    发表于 2025-12-28 21:32:08 回复(0)
    #include <stdio.h>
    
    int main() {
        int l,r,x;
        scanf("%d %d %d",&l,&r,&x);
        int last_multiple=(r/x)*x;
        if(last_multiple>=l){
            printf("%d\n",last_multiple);
        }else{
            printf("-1\n");
        }
        return 0;
    }

    发表于 2025-12-27 11:43:21 回复(0)
    import java.util.Scanner;

    public class Main {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            // 注意 hasNext 和 hasNextLine 的区别
            int l = in.nextInt();
            int r = in.nextInt();
            int x = in.nextInt();

            for(int i=l;i<=r;i++){
                if(i%x==0){
                    System.out.print(i);
                    return;
                }
            }
            System.out.print(-1);
           
        }
    }
    发表于 2025-12-10 18:29:35 回复(0)
    //不用遍历,可以直接取个余数找到第一个
    import java.util.Scanner;

    // 注意类名必须为 Main, 不要有任何 package xxx 信息
    public class Main {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            // 注意 hasNext 和 hasNextLine 的区别
            while (in.hasNextInt()) { // 注意 while 处理多个 case
                int a = in.nextInt();
                int b = in.nextInt();
                int x = in.nextInt();
                int m = a % x; //余数
                if (m == 0) { //余数为0直接输出
                    System.out.println(a);
                }else if (a + x -m <= b) { //补齐如果小于边界,找到
                    System.out.println(a + x -m);
                } else {
                    System.out.println(-1);
                }
            }
        }
    }
    发表于 2025-12-02 16:15:56 回复(0)
    #include <iostream>
    using namespace std;

    int main()
    {
        int l,r,x,y;
        cin>>l>>r>>x;
        y=((l+x-1)/x)*x;
        cout<<(y<=r?y:-1);
        return 0;
    }
    发表于 2025-11-15 16:52:53 回复(0)
    a,b,c = map(int,input().split())
    n = 0
    for i in range(a,b+1):
        if i%c == 0:
            n = i
            break
    if n == 0:
        print(-1)
    else:
        print(n)

    发表于 2025-10-25 13:20:52 回复(0)
    import random
    l,r,x=map(int,(input().split(" ")))
    my_list=[]
    flag=None for i in range(l,r+1): if i%x==0:
            my_list.append(i)
            flag=1 if flag!=1: print(-1) else: print(random.choice(my_list))
    
    发表于 2025-09-29 15:55:10 回复(0)
    #include <stdio.h>

    int main() {
        int a[3], b=0;
        for(int i=0;i<3;i++)
            scanf("%d",&a[i]);
        for(int i=a[0];i<=a[1];i++){
            if(i%a[2]==0){
                printf("%d",i);
                b++;
                break;
            }
        }
        if(b==0)
            printf("-1");
       
        return 0;
    }
    发表于 2025-09-26 10:55:44 回复(0)