1 条题解

  • 2
    @ 2025-8-27 23:27:48

    本人是出题者。

    请不要直接抄代码,这样对你我都不好

    我们按照模拟算法即可。

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long llint;
    
    bool is_prime(int x) {
    	if(x == 0 || x == 1) {
    		return false;
    	}
    	
    	for(llint i = 2;i * i <= x;i++) {
    		if(x % i == 0) {
    			return false;
    		}
    	}
    	return true;
    }
    
    llint m, r, s, k;
    llint cnt, cnt1;
    
    int main(void) {
    	cin >> m >> r >> s >> k;
    	
    	llint arr[s + 10], arr1[s + 10];
    	memset(arr, 0, sizeof(arr));
    	memset(arr1, 0, sizeof(arr1));
    	
    	for(llint i = 1;i <= s;i++) {
    		if(is_prime(i) == true) {
    			arr[++cnt] = i;
    		}
    	}
    	
    	for(llint i = 0;i <= cnt;i++) {
    		if(arr[i] % m == r) {
    			arr1[cnt1] = arr[i];
    			cnt1++;
    		}
    	}
    	
    	if(arr1[k - 1] == 0) {
    		cout << -1 << endl;
    	} else {
    		cout << arr1[k - 1] << endl;
    	}
    	return 0;
    }
    
    • 1

    信息

    ID
    105
    时间
    1000ms
    内存
    256MiB
    难度
    2
    标签
    递交数
    2
    已通过
    2
    上传者