算法竞赛入门 3-3 竖式问题

实现代码如下:

#include <iostream>
#include <iomanip>
#include <stdio.h>
#include <string>

using namespace std;
bool Solute(int a,int b,int c1,int c2,int c,string s);
int GetLength(int n);
int main()
{
//    freopen("out.txt","w",stdout);

    int c1,c2,c,a,b;
    int counter = 0;

    string inputStr;
    cin >> inputStr;

    for(a=100 ; a<999;a++){
        for(b=10 ; b<99 ;b++){
            c1 = a * (b % 10);
            c2 = a * (b / 10);
            c = a * b;

            //lenth = c.length;
            if(Solute(a,b,c,c1,c2,inputStr)==true){
                int length = GetLength(c);
                counter ++;
                cout << "<" <<counter << ">" << endl;
                cout << setw(length) << a << endl;
                cout << "X" << setw(length-1) << b << endl;
                cout << "----" << endl;
                cout << setw(length) << c1 << endl;
                cout << setw(length-1) << c2 << endl;
                cout << "----" << endl;
                cout << setw(length) << c << endl;
            }
        }
    }
    cout << endl << "The number of solutions = "<< counter << endl;
    return 0;
}

bool ContainStr(string a,string b)
{
    for(string::iterator it=b.begin() ; it!=b.end() ; it++){
        if(a.find(*it) == string::npos){
            return false;
        }
    }
    return true;
}
bool Solute(int a,int b,int c1,int c2,int c,string s)
{
    bool result = false;
    char buf[100];
    string s1;

    sprintf(buf,"%d%d%d%d%d",a,b,c,c1,c2);
    s1 = buf;
    if(ContainStr(s,s1) == true){
        result = true;
    }
    return result;
}

int GetLength(int n)
{
    int length = 0;
    while(n != 0){
        length ++;
        n /= 10;
    }
    return length;
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值