列表

详情


NC244138. 剩下的数

描述

牛牛有一个由  共 整数组成的环。

牛妹对这个数环进行了 m 次询问,每次给定一个整数 x 问牛牛操作到不能继续操作时最少会剩下几个数。

每一次操作,牛牛都会选择环上一段(可以是整个环),这一段数的和应该为 x 的倍数,然后牛牛就会删去这一段,同时把剩下的数按顺序重新连成一个环。

输入描述

本题采用多组案例输入,第一行一个整数 T 代表案例组数。
每组案例中,第一行输入两个空格分隔的整数:
接下来一行输入一个整数 m
接下来 m 行,每行输入一个数 x 代表询问。
保证:


单个测试点中所有案例 m 的和不超过

输出描述

对于每组案例,输出共 m 行,每行一个整数代表牛妹询问的答案。

示例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])

上一题