題目如下:
題目描述
已知兩個正整數m和n,求其最大公約數和最小公倍數。
輸入與輸出要求:
輸入的正整數m和n之間用空格分隔。輸出的最大公約數和最小公倍數之間用空格分隔。測驗用例保證m、n及其最小公倍數可以用int存盤。
程式運行效果:
Sample 1:
輸入:12 36
輸出:12 36
Sample 2:
輸入:13 7
輸出:1 91
我的代碼:
#include <stdio.h>
int main ()
{
int m,n,min,flag1;
int max,tool;
flag1=1;
scanf ("%d%d",&m,&n);
if (n>m)
{
tool=n;
n=m;
m=tool;
}
tool=m;
while (flag1==1)
{
if ((tool%m==0)&&(tool%n==0))
{
max=tool;
flag1=0;
}
tool=tool+1;
}
flag1=1;
tool=n;
while (flag1==1)
{
if ((m%tool==0)&&(n%tool==0))
{
min=tool;
flag1=0;
}
tool=tool-1;
}
printf ("%d %d\n",min,max);
return 0;
}
每次提交都顯示運行超時,自己找了好久找不到問題在哪,求大佬幫忙看看ORZ
uj5u.com熱心網友回復:
題目描述問題描述:
已知整數a、b、c。你的任務是求出區間[a,b]內的整數,滿足該數與“該數的所有因數(不包括本身但包括1,1的因數和按0處理)相加之和”的差的絕對值小于等于c的數字。例如27的因數是1、3、9。那么27與27的所有因數和的差為:27-(1+3+9)=14。
輸入與輸出要求:
輸入三個整數a、b、c。a、b代表所求區間范圍,滿足1<=a<=b<=10000,c代表限制條件,c>=0。輸出滿足條件的整數,每五個數為一行,整數之間用tab分隔,最后一個數后為換行符。當該區間沒有符合條件的整數時,輸出“There is no proper number in the interval.”
程式運行效果:
Sample 1:
輸入:1 10000 0
輸出:6 28 496 8128
Sample 2:
輸入:2000 5000 4
輸出:2048 2144 4030 4096
Sample 3:
輸入:900 1000 0
輸出:There is no proper number in the interval.
我的代碼:
#include <stdio.h>
#include <math.h>
int main ()
{
int a,b,c,ans,i1,i2,d,e,flag,flag1;
i2=c=d=flag=flag1=1;
i1=2;
e=1;
scanf ("%d%d%d",&a,&b,&c);
ans=a;
while (ans<=b)
{
i1=2;
e=1;
if ((ans==1&&b==1)&&(c!=0))
{ans=ans+1;
printf ("1");
flag1=0;}
if (ans==1)
ans=ans+2;
while (i1<ans&&flag1==1)
{
if (ans%i1==0)
{d=ans/i1;
e=e+d;}
i1=i1+1;
}
if (fabs(e-ans)<=c&&flag1==1)
{
printf ("%d\t",ans);
flag=0;
}
ans=ans+1;
}
if (flag==1&&flag1==1)
{printf ("There is no proper number in the interval.");}
printf ("\n");
return 0;
}
這一題我每次提交都顯示答案錯誤,哭了,試了好多例子都沒問題啊ORZ,如果大佬有空的話可以順帶把這題也解答一下嗎,拜托您了
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/195653.html
標籤:C語言
上一篇:時間超限
下一篇:模板中如何呼叫解構式?
