栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

poj 3989 A hard Aoshu Problem

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

poj 3989 A hard Aoshu Problem

#include <iostream>#include <cstdio>#include <memory.h>using namespace std;const int maxn = 10;char l[maxn],m[maxn],r[maxn];int have[maxn],ans[maxn];__int64 ll,mm,rr,cnt;int num;void put(char *s){    for(int i=0;s[i] != '';i++)    {        if(have[s[i] - 'A'] == -1)        { have[s[i] - 'A'] = num++;        }    }    return;}__int64 judge(char *s){    __int64 res = 0;    int len = strlen(s);    if(len == 1 && ans[have[s[0] - 'A']] == 0) return 0;    for(int i=0;s[i] != '';i++)    {        __int64 tmp = ans[have[s[i] - 'A']];        if(i == 0 && tmp == 0) return -1;        res *= 10;        res += tmp;    }    return res;}void check(){    ll = judge(l); if(ll == -1) return;    mm = judge(m); if(mm == -1) return;    rr = judge(r); if(rr == -1) return;    if(ll + mm == rr) cnt++;    if(ll - mm == rr) cnt++;    if(ll * mm == rr) cnt++;    if(mm != 0 && (ll % mm) == 0 && ll / mm == rr) cnt++;    return;}void dfs(int pos,int st){    if(pos == num)    {        check();        return;    }    for(int i=0;i<=9;i++)    {        if((st & (1 << i)) == 0)        { ans[pos] = i; dfs(pos+1 , st | (1 << i));        }    }    return;}void solve(){    memset(have,-1,sizeof(have));    scanf("%s %s %s",l,m,r);    num = cnt = 0;    put(l),put(m),put(r);    dfs(0,0);    printf("%I64dn",cnt);    return;}int main(){    int cas;    scanf("%d",&cas);    while(cas--)    {        solve();    }    return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/373322.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号