PTA 7-216 同数异形体

0## PTA 7-216 同数异形体
作者 庄波
单位 滨州学院

在自然界中,有些物质由同样的单一化学元素组成,因排列方式不同而具有不同性质,称为同素异形体,比如:钻石和石墨。

在这里插入图片描述

类似地,我们把由相同的数字(包括个数)、不同的排列形成的正整数称为同数异形体。

例如:12121 和 11221 均由 3 个 1 和 2 个 2 组成,因此互为“同数异形体”,但 12121 与 1122 则不是。

请编程判断两个数是否是同数异形体。

输入格式:
两个正整数 a 和 b,空格隔开,大小不超过 2
30

输出格式:
是否同数异形体的判断结果:
(1)若 a 等于 b,输出 Equal;
(2)若 a 和 b 是同数异形体,则输出 ALIEN;
(3)若 a 和 b 既不相等也不是同数异形体,输出 Different。

输入样例 1:

12121 11221

输出样例 1:

ALIEN

输入样例 2:

12121 1122

输出样例 2:

Different

输入样例 3:

12121 12121

输出样例 3:

Equal

代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

#include <stdio.h>
int allotrope(int x, int y){    //判断是否为同数异型体
    int flag = 1;    //标记是否为同数异型体。默认是
    int _xx = x, _yy = y;    //表示该整数的最后一位
    int _x[10] = {0}, _y[10] = {0};    //记录数字出现的次数
    while(x > 0){    //记录第一个整数的数字出现的字数
        x %= 10;
        _x[x]++;
        _xx /= 10;
        x = _xx;
    }
    while(y > 0){    //记录第二个整数的数字出现的字数
        y %= 10;
        _y[y]++;
        _yy /= 10;
        y = _yy;
    }
    for(int i = 0; i < 10; i++){    //比较两个整数的数字出现的字数是否一样
        if(_x[i] != _y[i]){
            flag = 0;
            break;
        }
    }
    return flag;
}
int main(){
    int integer, _integer;
    scanf("%d %d", &integer, &_integer);
    int fl = allotrope(integer, _integer);    //调用函数返回是否是同数异型体
    if(integer == _integer){    //两个整数相等
        printf("%d %d\nEqual\n", integer, _integer);
        return 0;
    }
    if(fl == 1){    //是同数异型体
        printf("%d %d\nALIEN\n", integer, _integer);
    }else{    //不是同数异型体
        printf("%d %d\nDifferent\n", integer, _integer);
    }
    return 0;
}

解题思路:
判断同数异形体的方法:
step1:记录第一个整数的数字出现的字数
step2:记录第二个整数的数字出现的字数
step3:比较两个整数的数字出现的字数是否一样

归属知识点:
函数
循环结构
选择结构

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值