《算法竞赛入门经典》第二版第二章习题C语言解

2-1

#include 
/* daffodil ABC=A^3+B^3+C^3 */
int main(int argc, const char * argv[]) {
    // insert code here...
    for(int i=100;i<1000;i++)
    {
        int a = floor(i / 100);
        int b = floor((i-a*100)/10);
        int c = i-a*100-b*10;
        if(i == a*a*a+b*b*b+c*c*c)
        {
            printf("%d\n", i);
        }
    }
    return 0;
}

2-2

#include 
/* hanxin */
int main() {
    // insert code here...
    int a,b,c,count=1;
    while ((scanf("%d%d%d",&a,&b,&c)!=EOF)) {
    for(int n=10;n<=100;n++)
    {
        if(n==100)
        {
            if(((n%3==a) && (n%5==b) && (n%7==c))==0)
            {
                printf("Case %d:No answer\n",count++);
            }
        }
        if(n%3==a && n%5==b && n%7==c)
        {  printf("Case %d:%d\n",count++,n);
            break;
        }

        else
            continue;
    }
    }
    return 0;
}

2-3

#include 

int main(){
    int n;
    scanf("%d",&n);
    int k=2*n-1;
    for(int i=1;i<=n;i++){
        int m=i-1;
        while(m>=0) {
            printf(" ");
            m--;
        }
        int l=k;
        while(l>0) {
            printf("*");
            l--;
        }
        k -= 2;
        printf("\n");
    }
    return 0;
}

2-4

#include 
#define mod 100000
int main(){
    long int n,m,i=1;
    while(scanf("%ld %ld",&n,&m)&&(n||m)){
        double s=0;
        for(;m>=n;m--){
            s=s+mod/(m*m);
        }
        printf("case %ld:%.5lf\n",i++,s/mod);
    }
    return 0;
}

2-5

#include "stdio.h"
/*deicimal*/
int main(){
    long int a,b;
    int c,kase=1;
    while(scanf("%ld %ld %d",&a,&b,&c)&&(a||b||c)){
        printf("Case %d:%d.",kase++,int(a/b));//整数
        for(;c>1;c--) {
            printf("%d", int(a * 10 / b));
            a = a * 10 % b;
        }
        int d=int(a*10/b);
        a = a * 10 % b;
        if(a*10/b>=5)
            printf("%d\n",d+1);
        else
            printf("%d\n",d);
    }
    return 0;
}

2-6

#include "stdio.h"
#include "cstdlib"
int myCompare(const void * elem1, const void * elem2){
    return (*(int*)elem1 -*(int*)elem2);
}
int main(){
    int a[9];
    int flag=0;
    for (int i=123;i<=321;i++) {
        int j = 2*i;
        int k = 3*i;
        a[0] = int(i/100);
        a[1] = i%100/10;
        a[2] = i-a[0]*100-a[1]*10;
        a[3] = int(j/100);
        a[4] = j%100/10;
        a[5] = j-a[3]*100-a[4]*10;
        a[6] = int(k/100);
        a[7] = k%100/10;
        a[8] = k-a[6]*100-a[7]*10;
        qsort(a,9, sizeof(int),myCompare);
        for (int index=0;index<8;index++){
            if (a[index]==a[index+1]){
                flag=0;
                break;
            }
            else
                flag=1;
        }
        if (flag==0)
            continue;
        else
            printf("%d %d %d\n",i,2*i,3*i);
    }
    return 0;
}

你可能感兴趣的:(算法,算法竞赛入门,算法,c语言)