问题标题: 酷町堂:4991+1789

0
0
已解决
高舒豪
高舒豪
中级光能
中级光能

first

second

first:
#include <bits/stdc++.h>
using namespace std;
int main(){
    int m,n;
    cin>>m;
    for(int i=1; i<=m; i++){
        cin>>n;
        if(n%3==0&&n%5==0){
            cout<<n;
        }
    }
    return 0;
}

40分……

second:
#include <bits/stdc++.h>
using namespace std;
int main(){
    long long cnt=0;
    int n=2;
    cin>>n;
    while(n!=1){
        if(n%2==0){
            n/=2;
            cnt++;
        }
        if(n%2==1){
            n*=3;
            n+=1;
            cnt++;
        }
    }
    cout<<cnt;
    return 0;
}

输出


0
已采纳
陈正朔
陈正朔
初级光能
初级光能

4991要用双重循环

对于每个N

for(int j=1;j<=N;j++){
            if(j%5==0&&j%3==0){
                sum+=j;
            }
        }

内层循环结束后

cout<<sum<<endl;//要有换行
sum=0;//注意清0

 

 

1789你的代码第13行有误,不然循环中会进行两次改变

我的核心(循环体)


        if(n%2==0){
            ans++;
            n/=2;
        }
        else{
           ans++;
           n=3*n+1; 
        }
    

 

最后输出ans即可

 

注意:下次不要两个问题用一个帖问

0
王文博
王文博
缔造者之神
缔造者之神

1789核心:

while (n!=1)
    {
        if (n%2==1) n=n*3+1;
        else n=n/2;
        i++;
    }
    cout<<i;

 

0
张帆
张帆
中级天翼
中级天翼

Second将if(n%2==1)改为else,不然假如说n/2为奇数将会循环两次,然后死循环,我是这么写的:

	while(n!=1){
		if(n%2==0){
			n/=2;
			cnt++;
		}
		else{
			n*=3;
			n++;
			cnt++;
		}
	}

 

张帆在2021-03-20 09:37:10追加了内容

我的意思是如果n=2,n/2=1,你在n*3+1就死循环了。

我要回答