问题标题: 5230

0
0
已解决
曹博扬
曹博扬
初级天翼
初级天翼

本渣渣超时代码

#include<iostream>
#include<algorithm>
#include<cstdio>//头文件 
#include<string>
using namespace std;
long long a; 
int main(){
    long long x,y;
    cin>>x>>y;
    for(int i=x+1;i<=y-1;i++){
        int c=0;
        for(int j=2;j<=i-1;j++){
            if(i%j==0){
                c++;
            }
        }
        if(c==0)
        a++;
    }
    cout<<a;
    return 0;
}

求大神找错!!!

曹博扬在2020-07-02 16:17:42追加了内容

还有这题

20分超时

#include<iostream>
#include<algorithm>
#include<cstdio>//头文件 
#include<string>
using namespace std;
int main(){
    int t,n,x=2;
    cin>>t;
    int s;
    for(int i=1;i<=t;i++){
    	s=-1;
    	x=2;
        cin>>n;
        for(int j=2;j<=n;j++){
        	if(j%x==0){
            	s-=j;
            	x*=2;
        	}
        	else{
            	s+=j;
        	}
        }
        cout<<s<<endl;//1
    }
    return 0;
}

顶一下

曹博扬在2020-07-02 16:19:43追加了内容

第一个是1586

第二个是5230


0
已采纳
刘英杰
刘英杰
新手天翼
新手天翼

思路:

其实就是先从1到n循环

第一次,如果遇到这个数是2,那么这个数不累加,反而要减

同时,将这个数乘2的积保存

之后的每次循环,都要判断这个数是否是上个保存的数

如果是,那就不累加反而减

如此最后的和还不会超时

PS:不是说好互关吗?我关了,你呢?

0
曹砚青
曹砚青
中级光能
中级光能

首先,区间[x,y)表示的是>=x且<y,你的理解有问题。

然后,中间的判断素数,如果找到因数了,就应该直接退出当前循环(break),可以节省时间。

但是就是这样也只有40分(TLE,超时),所以建议先打牢基础再来做这道题。

0
朱瑾文
朱瑾文
新手光能
新手光能
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
bool o;
int main(){
    long long x,y,z=0;
    cin>>x>>y;
    for(int i=x;i<y;i++){
        o=true;
        for(int j=2;j<i;j++){
            if(i%j==0){
               o=0;
               break;
            } 
        }
        if(o)z++;
    }
    cout<<z;
}

1586

1586:质数质数

Time Limit Exceeded:10分代码共享

朱瑾文的测评结果:

测试点

结果

时间

 

1

Time Limit Exceeded

2000ms

偷看一下数据

2

Time Limit Exceeded

1992ms

偷看一下数据

3

Time Limit Exceeded

1992ms

偷看一下数据

4

Accepted

104ms

偷看一下数据

5

Time Limit Exceeded

2004ms

偷看一下数据

6

Time Limit Exceeded

1996ms

偷看一下数据

7

Time Limit Exceeded

1984ms

偷看一下数据

8

Time Limit Exceeded

2028ms

偷看一下数据

9

Time Limit Exceeded

2000ms

偷看一下数据

10

Time Limit Exceeded

2000ms

偷看一下数据

我的提交(cpp):

 
  • #include<iostream>
  • #include<algorithm>
  • #include<string>
  • using namespace std;
  • bool o;
  • int main(){
  • long long x,y,z=0;
  • cin>>x>>y;
  • for(int i=x;i<y;i++){
  • o=true;
  • for(int j=2;j<i;j++){
  • if(i%j==0){
  • o=0;
  • break;
  • }
  • }
  • if(o)z++;
  • }
  • cout<<z;
  • return 0;
  • }
我要回答