UKE求调
查看原帖
UKE求调
1133882
Digital_Enigma楼主2024/3/28 20:39

【同余问题】min value

题目背景

数学问题

题目描述

对于整数 m,r,p>0m,r,p > 0,找到(r+kp)%m(r+kp) \% m的最小值。

输入格式

输入多行。

第一行输入 t(1≤t≤2∗105)t (1≤t≤2*10^5)组数据

接下来 tt 行,每行 33 个整数 r,p,m.(0<r,p,m≤109)r,p,m.(0<r,p,m \leq 10^9)

输出格式

输出多行。

每组数据输出一行一个整数。

样例 #1

样例输入 #1

5
57 74 27
9 53 23
45 84 38
48 18 48
13 75 30

样例输出 #1

0
0
1
0
13

大佬们帮帮我吧嘤嘤嘤

CODE:

#include <iostream>		// 基本入出力ストリーム
#include <algorithm>	// 一般的なアルゴリズム(ソート、ルックアップ、やり直し、二分ルックアップなど)
#include <vector>		// 動的配列(スペースが足りないと自動的に拡張されます)
#include <queue>		//  スタック(先に入って先に出ます)
#include <stack>		// スタック(先に入ってから出ます)
#include <set>			// 集合(反復しない順序)です
#include <map>			// キー値対コンテナ(マッピング)
#include <list>			//  両方向リスト
#include <math.h>		//  すうがくかんすう
#include <functional>	// 通用的函数绑定和调用机制一般的なバインディングと呼び出しの仕組み

#define endl '\n'
#define pii pair<int, int>
#define pdd pair<double, double>
#define fi first
#define se second
#define pb push_back
#define eb emplace_back

using namespace std;

const int inf = 1e9 + 7;
const int mod = 998244353;
const int N = 2e5 + 10, M = N << 1;

void solve(){
    // 竞赛程序
    int m,r,p,k=0;
    cin>>r>>p>>m;
    for(int k=0;k<=m;k++){
    	if((r+k*p)%m==0){
    		cout<<"0"<<endl;
    		return;
		}
	}
	cout<<(r+k*p)%m<<endl;
}

signed main(){

    ios::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);

    int t = 1;
	cin >> t;	// 非多组测试数据请注释该行
    while(t--) solve();
    return 0;
}

千恩万谢!

2024/3/28 20:39
加载中...