这题是一道分类讨论的题。
可以注意到最终的答案要么是 x ,要么是 0 ,要么是 x%n。
对这几种情况分类讨论即可,具体看代码。
T = int(input())
for _ in range(T):
n, x, k = map(int, input().split())
if x <= n:
# k ~ n x
if k <= x: # 最后会变成 0
print(0)
else:
print(x) # 最后是 x
else:
if k == n + 1: # 如果是最后一项
print(x)
else:
x %= n # 先 mod n
if k < x:
print(0)
else:
print(x)
#include<bits/stdc++.h>
using namespace std;
int t, n, x, k, ans;
int main(){
scanf("%d", &t);
while(t--){
scanf("%d%d%d", &n, &x, &k);
ans = x; // 表示第n+1项的值为x
while(n >= k){
ans = ans % n;
n--;
}
printf("%d\n", ans);
}
return 0;
}
import java.util.*;
// 注意类名必须为Main
class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int T = in.nextInt();
while (T-- > 0){
int n = in.nextInt();
int x = in.nextInt();
int k = in.nextInt();
if(k == n+1){
System.out.println(x);
continue;
}
int count = n-k+1;
while (count-- > 0){
x = x % (n--);
}
System.out.println(x);
}
}
}
小红有一座神奇的花园,花园中种植了 n+1 株神秘的花朵,每株花朵都有一个美丽值。花朵的美丽值以数组 a 表示,其中 ai 表示第 i 株花朵的美丽值。
花园里除了最后一株花 an+1 其美丽值为 x,其它每株花的美丽值都由下一株花的美丽值决定,具体为:
ai=ai+1modi(1≤i≤n)小红希望知道第 k 株花的美丽值是多少。请你帮助他计算。
第一行输入一个整数 T(1≤T≤105),表示询问的次数。
接下来 T 行,每行输入三个整数 n(1≤n≤109),x(0≤x≤109),k(1≤k≤n+1),表示一次询问。
对于每次询问,输出一个整数表示第 k 株花的美丽值。
2
1 1 1
5 1 4
0
1