您的位置:首页 > 其它

打印竖式

2016-03-03 10:07 363 查看
/******************************
作者:cncoderalex
博客:http://blog.csdn.net/cncoderalex
*******************************/

#include"Test.h"
#include<cstring>
#include<iostream>
#include<queue>
#include<vector>
#include<string>

using namespace std;

#define MAXN 20
int a[MAXN];
int BitCount;

void GetBit(int num)
{
BitCount = 0;
while (num)
{
a[BitCount++] = num % 10;
num /= 10;
}
}

bool IsOK(int num)
{
while (num)
{
int bit = num % 10;
num /= 10;

bool bFound = false;
for (int i = 0; i < BitCount; i++)
{
if (bit == a[i])
{
bFound = true;
break;
}
}

if (!bFound)
return false;
}

return true;
}

void PrintOneAns(int a, int b, int num)
{
printf("<%d>\n", num);
printf("%5d\n", a);
printf("X");
printf("%4d\n", b);
printf("-----\n");

int result1 = a * (b % 10);
int result2 = a * (b / 10);
printf("%5d\n", result1);
printf("%4d \n", result2);
printf("-----\n");
printf("%5d\n", a * b);
printf("\n");
}

void PrintFinalAns(int num)
{
printf("The number of solutions = %d\n", num);
}

int main()
{
printf("http://blog.csdn.net/cncoderalex");
printf("\n");

_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);

int n = 0;
while (scanf("%d", &n) != EOF)
{
GetBit(n);

int AnsCount = 0;
for (int i = 100; i <= 999; i++)
{
if (IsOK(i))
{
for (int j = 10; j <= 99; j++)
{
if (IsOK(j))
{

int result1 = i * (j % 10);
int result2 = i * (j / 10);
int ans = i * j;

if (IsOK(result1) && IsOK(result2) && IsOK(ans))
{
PrintOneAns(i, j, ++AnsCount);
}
}
}
}
}

PrintFinalAns(AnsCount);
}

system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: