[codeforces 1374A] Required Remainder 帶餘除法(該詞來自初等數論)

Codeforces Round #653 (Div. 3)   參與排名人數11687

[codeforces 1374A]    Required Remainder    帶餘除法(該詞來自初等數論)

總目錄詳見https://blog.csdn.net/mrcrack/article/details/103564004

在線測評地址http://codeforces.com/contest/1374/problem/A

Problem Lang Verdict Time Memory
A - Required Remainder GNU C++17 Accepted 46 ms 3600 KB

題目大意:0<=k<=n,找k%x=y,對應的k的最大值

基本思路:k=a*x+y(帶餘除法),a=n/x或者a=n/x-1.

樣例模擬如下:

7 5 12345

12339
(12345/7)*7+5=1763*7+5=12346>12345,故12346-7=12339

5 0 4

0
(4/5)*5+0=0<4,故輸出0

10 5 15

15
(15/10)*10+5=1*10+5=15==15故輸出15


17 8 54321

54306
(54321/17)*17+8=3194*17+8=54306<54321故輸出54306

499999993 9 1000000000

999999995
(1000000000/499999993)*499999993+9
=2*499999993+9=999999995<1000000000
故輸出999999995

10 5 187

185
(187/10)*10+5=18*10+5=185

2 0 999999999

999999998
(999999999/2)*2+0=499999999*2+0=999999998

AC代碼如下

#include <stdio.h>
int main(){
	int t,x,y,n,a,b;
	scanf("%d",&t);
	while(t--){
		scanf("%d%d%d",&x,&y,&n);
		a=n/x;
		b=a*x+y;
		if(b>n)b-=x;
		printf("%d\n",b);
	}
	return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章