| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
没有用递归,纯数学算法。我觉得能看懂的 是强人。#include <iostream>
#include <cstdlib>
#include <vector>
#include <algorithm>
#include <iomanip>
#include <cmath>
#include <list>
using namespace std;
class ADB {
public:
int A, D, B;
int I;
public:
ADB(){}
ADB(int a, int d, int b, int i) : A(a), D(d), B(b), I(i) {}
ADB(const ADB& adb) {
A = adb.A;
D = adb.D;
B = adb.B;
I = adb.I;
}
int add1() const {
return (A * 10 + D) * I + B;
}
int add2() const {
return A * I + B;
}
int sum() const {
return add1() + add2();
}
bool operator<(const ADB& b) const {
return this->add1() < b.add1();
}
bool operator==(const ADB& b) const {
return this->add1() == b.add1();
}
int w() {
return (int)log10(I);
}
};
int main() {
int number;
while (cin >> number) {
vector<ADB> result;
if (number % 2 == 0) {
for (int i = 10; i <= number; i *= 10) {
{
int a11d = number / i;
int a = a11d / 11;
int d = a11d % 11;
if (d != 10) {
int b = (number - i * (11 * a + d)) / 2;
ADB t(a, d, b, i);
if (t.add1() + t.add2() == number && t.add1() != t.add2()) {
result.push_back(t);
}
}
}
{
int a11d = number / i - 1;
int a = a11d / 11;
int d = a11d % 11;
if (d != 10) {
int b = (number - i * (11 * a + d)) / 2;
ADB t(a, d, b, i);
if (t.add1() + t.add2() == number && t.add1() != t.add2()) {
result.push_back(t);
}
}
}
}
}
{
int a = number / 11;
int d = number % 11;
if (d != 10) {
result.push_back(ADB(a, d, 0, 1));
}
}
sort(result.begin(), result.end());
vector<ADB>::iterator end = unique(result.begin(), result.end());
result.resize(end - result.begin());
cout << result.size() << endl;
for (vector<ADB>::iterator it= result.begin(); it != end; it++) {
cout << (*it).add1() << " + "
<< setfill('0') << setw((*it).w())
<< (*it).add2() << " = "
<< (*it).sum() << endl;
}
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator