羅区-P1618三連勝単式(アップグレード版)

タイトル説明

1,2、...、三つのグループに9~9の数、それぞれが3×3桁の数字からなる、3 3桁の比であること:B:C、再び決定すべての3つの条件を満たすように3桁、解無しであれば、出力は「いいえ!!!」。

入力形式

3つの数字、ABC。

出力フォーマット

3つの数字のいくつかの行。各行は、番号順に配置されています。

サンプル入力と出力

入力#1

1 2 3

出力#1

192 384 576
219 438 657
273 546 819
327 654 981

説明/ヒント

A <B <Cことを確認し

タイトルと効果分析

それは9要求番号1の主題であり、3×3桁、及びAを満たす必要からなる群に配置された9個の3個の原子、:C比:B.

この数が3が選択繰り返すことができないので、3桁の数123最小で得ることができます。あなたが暴力を解決するために123から開始することができますので、以下のように、二つの小さな細部があるがあります。

  1. 結果として3桁の0は、この番号が含まれていません。
  2. 3桁の要素自体を繰り返すことはできません。

コード

#include<iostream>
#include<algorithm>
using namespace std;

int main()
{
    int q,b,c,sum=0,temp;
    cin >> q >> b >> c;
    for(int i=123;i<999;i++)
    {
        int a[10]={0},s=0;
        if(i/q*c>999)
            break;
        if(i%q!=0)
            continue;
        temp = i;//第一个数判断开始;
        for(int n=0;n<3;n++)
        {
            if(temp%10==0||a[temp%10]==1)
            {
                s=1;
                break;
            }

            a[temp%10]=1;
            temp = temp / 10;

        }
        if(s==1) continue;
        int j=i/q*b;
        temp = j;//第二个数判断开始;
        for(int n=0;n<3;n++)
        {
            if(a[temp%10]==0&&temp%10!=0)
                a[temp%10]=1;
            else
            {
                s=1;
                break;
            }
            temp = temp/10;
        }
        if(s==1) continue;
        int k=i/q*c;
        temp = k;//第三个数判断开始;
        for(int n=0;n<3;n++)
        {
            if(a[temp%10]==0 && temp%10!=0)
                a[temp%10]=1;
            else
            {
                s=1;
                break;
            }
            temp = temp/10;
        }
        if(s==1) continue;
        else
        {
            cout << i << " " << j << " " << k <<endl;
            sum++;
        }
    }
    if(sum==0)
    {
        cout << "No!!!" <<endl;
    }
    return 0;
}

より多くのあなたは私の個人的なブログを訪問することができます。多くの非難を

おすすめ

転載: www.cnblogs.com/cydi/p/11455669.html