T1.求余

思路:首先确定他的范围,再用for循环循环判定每一个数字,从中找出最终的值。

正确代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
	freopen("mod.in","r",stdin);
	freopen("mod.out","w",stdout);
	int n,l,r,a[3001],minn=1e9,num=1e9;
	cin>>n>>l>>r;
	for(int i=0;i<n;i++){
		cin>>a[i];
	}
	int sum=0;
	for(int i=l;i<=r;i++){
		for(int j=0;j<n;j++){
			sum+=a[j]%i;
		}
		if(sum<num){
			minn=i;
			num=sum;
		}
		sum=0;
	}
	cout<<minn;
	return 0;
}

T2.乘法

思路:

暴力算法:枚举每一个数字,去判断它是否符合条件,如果符合,直接输出。

暴力算法解:

#include<bits/stdc++.h>
using namespace std;
int main(){
	freopen("mul.in","r",stdin);
	freopen("mul.out","w",stdout);
	int n,a[100001],k[100001],num=0;
	cin>>n;
	long long sum=0,i=1;
	bool f=true;
	for(int i=0;i<n;i++){
		cin>>a[i]>>k[i];
	}
	for(int x=0;x<n;x++){
		num=k[x];
		while(f){
			sum=i*a[x];
			while(k[x]!=0){
				if(sum%10==0){
					k[x]--;
					sum/=10;
				}else{
					k[x]=num;
					break;
				}
			}
			if(k[x]==0){
				cout<<i<<endl;
				f=false;
				i=0;
			}
			i++;
		}
		f=true;
	}
	return 0;
}

算法2:把1乘k个10,再去向a取模,如果不是0,那么就要把数字1加一之后,再次进行判断,直到找到符合条件的数为止。