赛码网 周考 4.28 第二题要怎么优化才能AC啊
发布于 2017-04-28 20:01 2290 次浏览 0 赞 来自 我要提问  

一直50%。。。

import java.util.*;

public class Main {

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

while (scanner.hasNext()) {

int n = scanner.nextInt();

int num=1;

if(n==1){

System.out.println(1);

}else if(n%2!=0){

for(int i=n/3+2;i<n;i=i+2){

if(!solve(i,n)){

num++;

}

}

System.out.println(num+n/2);

}else {

System.out.println(n/2);

}

}


scanner.close();

}

public static boolean solve(int m,int n){

   while (n%m != 0) {   

               int temp = n%m;   

               n=m;   

              m= temp;   

          }

 if(n!=1) return true;

         return false;

}

}


16 条回复

我用C写的,直接就ac了

2017-04-28 20:05
coder_59RAE2P8 回复 枭鹰

额 难道要换语言才行。。。

2017-04-28 20:08

#include<stdio.h>

int main(){

int s1=0,s2=0,i,j,t;

char str[16];

scanf("%s",str);

for(i=15;i>0;i-=2){//逆向奇数位求和

    s1+=(int)str[i]-48;

}

for(j=14;j>=0;j-=2){//逆向偶数位求和

    t=((int)str[j]-48)*2;

    if((t/10)!=0) t-=9;

    s2+=t;

}

if((s1+s2)%10==0) printf("ok\n");

else printf("error\n");

return 0;

}


2017-04-28 20:10
枭鹰 回复 coder_59RAE2P8

java肯定可以ac,这跟语言没关系吧,上面是我的代码

2017-04-28 20:11
coder_NP3GZHC9 回复 枭鹰

题主问的是第二题吧?你好像放的是第一题?

2017-04-28 20:12
coder_59RAE2P8 回复 枭鹰

这是第一题啊 我说的是第二题

2017-04-28 20:12
枭鹰 回复 枭鹰

第一题你是怎么做的,我的只有67%?

2017-04-28 20:13
枭鹰 回复 枭鹰

额,我的显示这是第二题

2017-04-28 20:16
枭鹰 回复 枭鹰

我的互质是第一题,序列号验证时第二题,为什么还会不一样/尴尬

2017-04-28 20:17
枭鹰 回复 coder_NP3GZHC9

我的互质是第一题,序列号验证时第二题,为什么还会不一样/尴尬

2017-04-28 20:18
coder_NP3GZHC9 回复 枭鹰

互质那题你能过么?我好像一直50%

2017-04-28 20:20
coder_59RAE2P8 回复 枭鹰

你说的第一题就是贴出来的代码啊,超时,只过了50%。。。

2017-04-28 20:23
枭鹰 回复 coder_NP3GZHC9

我的67%

#include<stdio.h>

int main(){

long int n,count=0,i,t,k,c;

scanf("%ld",&n);

if(n==1)printf("%ld",count+1);

else{

    for(i=1;i<n;i++){

        t=i;

        k=n;

        while(k%t!=0){//欧几里得算法(最大公约数为1,两数互质)

            c=k;

            k=t;

            t=c%t;

        }

        if(t==1) count++;

    }printf("%ld",count);

}

return 0;

}


2017-04-28 20:24
枭鹰 回复 coder_59RAE2P8

互质我也只有67%

2017-04-28 20:27
枭鹰 回复 枭鹰

我的思路就是最大公约数为1就互质,求最大公约数使用欧几里得算法,这样的话时间复杂度粗略估计小于O(nlogn)

2017-04-28 20:30
coder_59RAE2P8 回复 枭鹰

一样

2017-04-28 20:43
添加回复
回到顶部