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加一之后,再次进行判断,直到找到符合条件的数为止。