NC244138. 剩下的数
描述
牛牛有一个由 共 个整数组成的环。
牛妹对这个数环进行了 次询问,每次给定一个整数 问牛牛操作到不能继续操作时最少会剩下几个数。
每一次操作,牛牛都会选择环上一段(可以是整个环),这一段数的和应该为 的倍数,然后牛牛就会删去这一段,同时把剩下的数按顺序重新连成一个环。
输入描述
本题采用多组案例输入,第一行一个整数 代表案例组数。
每组案例中,第一行输入两个空格分隔的整数: 。
接下来一行输入一个整数 。
接下来 行,每行输入一个数 代表询问。
保证:
单个测试点中所有案例 的和不超过
输出描述
对于每组案例,输出共 行,每行一个整数代表牛妹询问的答案。
示例1
输入:
1 1 5 2 2 3
输出:
1 0
C++(g++ 7.5.0) 解法, 执行用时: 234ms, 内存消耗: 608K, 提交时间: 2022-11-25 19:03:32
#include<bits/stdc++.h> using namespace std;using ll=long long; int T,l,r,q,x; int main(){ for(cin>>T;T--;){ cin>>l>>r>>q; ll s=(l+r)*(r-l+1ll)/2; for(;q--;){ cin>>x; if(s%x==0)cout<<0<<endl; else cout<<1<<endl; } } return 0; }
C++(clang++ 11.0.1) 解法, 执行用时: 248ms, 内存消耗: 564K, 提交时间: 2022-12-06 10:15:37
#include<bits/stdc++.h> using namespace std; long long t,m,l,r,x; int main(){ for(cin>>t;t--;) { cin>>l>>r; for(cin>>m;m--;) { cin>>x; cout<<!!((l+r)*(r-l+1)/2%x)<<"\n"; } } }
Python3 解法, 执行用时: 958ms, 内存消耗: 4720K, 提交时间: 2022-11-26 13:25:11
for i in range(int(input())): l,r=map(int,input().split()) sum=(r-l+1)*(l+r)//2 for j in range(int(input())): print([0,1][sum%int(input())!=0])