一、循环优化
eg冬眠
优化:减少循环次数节约时间
#include<bits/stdc++.h>
using namespace std;
int main(){
int d,n,sum=0,a[100000];
cin>>d>>n;
for(int i=0;i<n;i++){
cin>>a[i];
sum+=a[i];
}
int cnt1=0,cnt2=0,i=0;
cnt1=d/sum;//看看有几个可以被整除;
d=d%sum;//余数一定小于sum,只循环一次就可以了
while(d>0){
d=d-a[i++];
cnt2++;
}
cout<<cnt1*n+cnt2;
}
二、读题准确,思路要清晰
题目要求该数列中有几个为3的倍数,判断三的倍数的条件为---个位数字之和为3的倍数,此题刚好为各位数字相加
多此一举
#include<bits/stdc++.h>
using namespace std;
int main(){
long long n;
cin>>n;
long long shu=0;
long long cnt =0;
for(int i=1;i<=n;i++){
long long a=0;
long long m=shu+i;
long long k=m;
while(m!=0){
a=a+m%10;
m=m/10;
}
if(a%3==0)
cnt++;
shu=k*10;
}
printf("%lld",cnt);
}
正确做法
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,cnt=0,sum=0;
cin>>n;
for(int i=1;i<=n;i++){
sum+=i;
if(sum%3==0){
cnt++;
}
}
printf("%d",cnt);
}