ZOJ Problem Set Vol 1(Update paste)

Problem-1001

完成情况

执行代码:

#include <stdio.h>
#define EOF -1
int main(){
    int i, j;
    while (scanf("%d %d", &i, &j) != EOF){
        printf("%d
", i + j);
    }
    return 0;
}

Problem-1002(undetermined)

Problem-1003

 

简单描述:

  有一个游戏,规则是这样,有一堆气球100个,标号1到100,有两个人参与.一开始,两个人就疯狂的踩气球,时间到就结束了,把他们各自踩破的球上的编号乘起来,分别是M,N,那么排名自然揭晓了

  可是分数低的人不服气,想申诉.现在问题来了,怎么申诉呢?因为每个标号的球只有一个,所以加入B踩破的话,A就没办法踩了,申诉想要产生的矛盾就在这儿.现在假如分数是 343 49 ,343可以是踩了 7和49,49只能是踩49,他们两都同时必须要踩这个49,那么就产生矛盾了.所以49赢了.还有要是有人的分数,不能由1到100的数的成绩的出,算说假话,如果两个人都说假话,还是分高的赢.

有三种情况:

  (1)A,B没有矛盾,那么A赢

  (2)A,B怎么都会有矛盾,而且B说的是真话,那么B赢

  (3)A,B怎么都会有矛盾,而且B说的是假话,那么A赢

完成情况 

执行代码:

#include <stdio.h>
#define EOF -1

int flagA, flagB;

void DFS(int x, int y, int z){
    if (x == 1 && y == 1){
        flagA = 1;
        return ;
    }
    if (y == 1){
        flagB = 1;
    }
    while (z < 100){
        z++;
        if (x % z == 0){
            DFS(x/z, y, z);
            if (flagA)
                return ;
        }
        if (y % z == 0){
            DFS(x, y/z, z);
            if (flagA)
                return ;
        }
    }
}

int main(){
    int a, b;
    while (scanf("%d %d", &a, &b) != EOF){
        if (a < b){
            int temp = a;
            a = b;
            b = temp;
        }
        flagA = flagB = 0;
        DFS(a, b, 1);
        if (flagA == 0 && flagB == 1)
            printf("%d
", b);
        else 
            printf("%d
", a);
    }
    return 0;
}
很想高飞,但我不能;不想天空,剩我一人。
原文地址:https://www.cnblogs.com/lixiansheng/p/9035682.html