zoukankan      html  css  js  c++  java
  • 暴力大法好


    标题:神奇算式

    由4个不同的数字,组成的一个乘法算式,它们的乘积仍然由这4个数字组成。

    比如:

    210 x 6 = 1260
    8 x 473 = 3784
    27 x 81 = 2187

    都符合要求。

    如果满足乘法交换律的算式算作同一种情况,那么,包含上边已列出的3种情况,一共有多少种满足要求的算式。

    请填写该数字,通过浏览器提交答案,不要填写多余内容(例如:列出所有算式)。

    #include <algorithm>
    #include <cstdio>
    using namespace std;
    int vis[9999]={0};
    bool Compare(int rec,int A, int B)
    {
        int a[5], b[5];
        int cnt=0;
        while(rec){a[cnt++]=rec%10; rec/=10;}
        int tot=0;
        while(A){b[tot++]=A%10; A/=10;}
        while(B){b[tot++]=B%10; B/=10;}
        sort(a, a+cnt);
        sort(b, b+tot);
        int  i;
        for(i=0; i<cnt; i++) if(a[i]!=b[i]) break;
        if(i==cnt) return true;
        else return false;
    }
    int main()
    {
        int t=0;
        for(int i=1; i<=9; i++)
      {
    for(int j=1; j<=9; j++) { for(int k=0; k<=9; k++) { for(int o=0; o<=9; o++) { if(j!=k && j!=o && k!=o && i!=j && i!=k && i != o) { int sum=j*100+k*10+o; int Q=i*sum; if(Q>=1000&&Q<=9999) { if(Compare(Q, sum, i)&& (!vis[sum] || !vis[i])) { vis[sum]=1; vis[i]=1; t++; printf("%d %d ", i, sum); } } } } } } }  for(int i=1; i<=9; i++) { for(int j=0; j<=9; j++) { for(int k=1; k<=9; k++) { for(int o=0; o<=9; o++) { if(j!=k && j!=o && k!=o && i!=j && i!=k && i != o) { int sum1=i*10+j; int sum=k*10+o; int Q=sum1*sum; if(Q>=1000&&Q<=9999) { if(Compare(Q, sum, sum1)&& (!vis[sum] || !vis[sum1])) { vis[sum]=1; vis[sum1]=1; t++; printf("%d %d ", sum1, sum); } } } } } } } printf("%d ", t); return 0; }
  • 相关阅读:
    [学习笔记]多维偏序
    SCOI2009 游戏
    置换群和Burnside引理,Polya定理
    AC自动机——多个kmp匹配
    51nod 1667 概率好题
    分块——优化的暴力
    [Cqoi2014]数三角形——组合数
    C++ 中的导致编译错误汇总
    哈夫曼树Huffman
    导出查询结果到csv文件
  • 原文地址:https://www.cnblogs.com/soTired/p/5296178.html
Copyright © 2011-2022 走看看