为什么这样做会有测试点不能通过呢,自己看了好几遍还是不知道为什么,谢谢大家

P1029 [NOIP2001 普及组] 最大公约数和最小公倍数问题

momo36524 @ 2023-10-13 10:40:35

#include<stdio.h>
int if_is_maxessential(int n,int m,int essential);
int main(void)
{
    int input1,input2,dis1,dis2,ans=0;
    scanf("%d %d",&input1,&input2);

    for(dis1=2;dis1<=input2;dis1++)
    {
        if((input1*input2)%dis1==0)
        {
            dis2=(input1*input2)/dis1;
            if(if_is_maxessential(dis1,dis2,input1))
                ++ans;
        }
    }
    printf("%d",ans);

    return 0;
 } 
 int if_is_maxessential(int n,int m,int essential)
 {
     int min,i,essen;
     min=(n<m)?n:m;
     for(i=2;i<=min;i++)
     {
         if( (n%i==0)&&(m%i==0))
                 essen=i;
     }

     if(essen==essential)
         return 1;
    else return 0;     
 }

by DZ1000 @ 2023-10-17 10:48:49

int min,i,essen;

改成:

int min,i,essen=0;

以后记得初始化变量,否则可能会付出惨痛的代价。


|