evilknight 发表于 2009-8-29 20:50:08

算法入门题-8月30日

第一题:
最大公因数(**)
内容: 简体->正體
给定两个数字,请得出它们的最大公因数
输入说明:
两个整数 大于 0, 小于 2^31
输出说明:
最大公因数为一整数
范例输入:
12 15

范例输出 :
3

第二题:
阶乘运算
内容: 简体->正體
给定一个 n 值,请计算出 n! 的结果
输入说明:
输入一个整数 n
输出说明:
输出 n! 结果,结果不大于 2^63
范例输入:

0 1 5
范例输出 :

1 1 120

[ 本帖最后由 evilknight 于 2009-8-30 22:07 编辑 ]

wmp1014 发表于 2009-8-30 21:33:49

第一题:
#include "stdafx.h"
#include <iostream.h>
#include <stdio.h>
#include <string.h>

int main()
{
int a,b,max=0;
cout<<"Input two numbera!"<<endl;
for(int j=0;j<1;j++){
cin>>a;
//flush;
cin>>b;}

if(a>b)
{
    for (int i=1;i<b;i++)
   {
    if (a%i==0&&b%i==0)
    {
                max=i;
    }
   }
cout<<max<<endl;
}
if(a<b)
{
       for (int i=1;i<a;i++)
       {
               if (a%i==0&&b%i==0)
               {
                       max=i;
               }
       }
       cout<<max<<endl;
}
return 0;
第二题:
#include "stdafx.h"
#include <iostream.h>
#include <stdio.h>
#include <string.h>

int main()
{
        int n,sun=1;
        cout<<"Input"<<endl;
        cin>>n;
        if (n==0)
        {
                cout<<1<<endl;
        }
        else
        {
                for (int i=1;i<=n;i++)
                {
                        sun*=i;
                }
                        cout<<sun<<endl;
        }
        return 0;
}
本来想用梯归的,但还是没掌握好,用不出来。

evilknight 发表于 2009-8-30 22:07:13


/**********************************************************************************/
/*Problem: a024 "最大公因數(**)"                                              */
/*Language: C                                                                   */
/*Result: AC (10ms, 360KB) on ZeroJudge                                       */
/*Author: MicroQ                                                               */
/**********************************************************************************/

#include <stdio.h>

long long int f(long long int a, long long int b)
{
        long long int t;
        while (a%b)
        {
                t = b;;
                b = a%b;
                a = t;
        }
        return b;
}

int main(void)
{
        long long int a,b;
        while ( scanf("%lld%lld",&a, &b) > 0)
                printf("%lld\n", f(a,b));
        return 0;
}

#include <stdio.h>

int main(void)
{
        long long int sum;
        int n, i;
        while (scanf("%d", &n) > 0)
        {
                sum = 1;
                for (i = 2; i <= n; ++i)
                        sum *= i;
                printf("%lld\n", sum);
        }
        return 0;
}
页: [1]
查看完整版本: 算法入门题-8月30日