Ogólnie niezła faza. Wygląda to tak:
Przed świętami moja matka nakupiła proszków do pieczenia w wiadomym celu. Na opakowaniach była promocja, która polegała na tym, że:
- była kwota
- kwoty z różnych opakowań należy sumować
- jak uzbierasz sumę spełniającą warunek: x%1000==0 && x>=1000 && x<=10000 (oczywiście na opakowaniu było to napisane po ludzku), to tyle wygrywasz.
- promocja trwa chyba do początku marca. nie jestem pewien, teraz nie mam z sobą żadnego opakowania.
Postanowiłem napisać program sprawdzający czy coś wygrałem. Program pobiera z pliku wejściowego kwoty z opakowań (ostatnia to 0 - warunek stopu), na wyjściu wypisuje czy coś wygrałem. Jeśli nic nie wygrałem, to do pliku necessary.txt zapisuje wszystkie kwoty, z których TYLKO JEDNA wystarczy do wygrania nagrody. W nawiasach klamrowych napisane jaka (jakie) to będą kwoty.
Kody programu:
//code_finder.h
#ifndef _CODE_FINDER_
#define _CODE_FINDER_
#include <vector>
class CodeFinder
{
public:
CodeFinder() ;
virtual ~CodeFinder() ;
virtual void findWins() ;
unsigned getNumberOfWins() ;
std::vector<unsigned> &getWin(unsigned index) ;
virtual void add(unsigned val) ;
unsigned getWinsForNecessary(unsigned index) ;
bool isWinOfNecessary(unsigned nec, unsigned value) ;
protected:
typedef std::vector<unsigned> ValueType ;
ValueType values ;
unsigned necessary[10000] ;
void addWin(ValueType &winVec) ;
bool isWin(long unsigned value) ;
bool isTooBig(long unsigned value) ;
virtual void find(std::vector<unsigned> &vec, long unsigned sum, unsigned index, unsigned depth)=0;
int getNecessaryToWin(unsigned expected, unsigned value) ;
void addNecessaryToWin(unsigned nec, unsigned sum) ;
private:
std::vector<ValueType> wins ;
};
inline unsigned CodeFinder::getWinsForNecessary(unsigned needed)
{
return necessary[needed] ;
}
inline int CodeFinder::getNecessaryToWin(unsigned expected, unsigned value)
{
return expected-value ;
}
#endif
//code_finder.cpp
#include "code_finder.h"
CodeFinder::CodeFinder()
{
}
CodeFinder::~CodeFinder()
{
}
void CodeFinder::findWins()
{
wins.clear() ;
for(int i=0; i<10000; ++i)
{
necessary[i] = 0 ;
}
std::vector<unsigned> vec ;
long unsigned sum=0 ;
for(int i=0; i<values.size(); ++i)
{
vec.clear() ;
vec.push_back(values[i]) ;
sum=values[i] ;
find(vec, sum, i, 0) ;
}
}
unsigned CodeFinder::getNumberOfWins()
{
return wins.size() ;
}
std::vector<unsigned> &CodeFinder::getWin(unsigned index)
{
return wins[index] ;
}
void CodeFinder::add(unsigned val)
{
if(val>0)
{
values.push_back(val) ;
}
}
bool CodeFinder::isWin(long unsigned value)
{
if(value%1000)
{
return 0 ;
}
if(value<1000 || value>10000)
{
return 0 ;
}
return 1 ;
}
bool CodeFinder::isTooBig(long unsigned value)
{
return value>10000 ;
}
void CodeFinder::addWin(ValueType &winVec)
{
wins.push_back(winVec) ;
}
void CodeFinder::addNecessaryToWin(unsigned nec, unsigned sum)
{
sum/=1000 ;
sum-- ;
unsigned value = 1<<sum ;
necessary[nec] |= value ;
}
bool CodeFinder::isWinOfNecessary(unsigned nec, unsigned sum)
{
sum/=1000 ;
sum-- ;
unsigned value = 1<<sum ;
return necessary[nec]&value ;
}
//logger.h
#ifndef _LOGGER_
#define _LOGGER_
#include <ostream>
class Logger
{
public:
Logger(std::ostream &os_) ;
std::ostream &getOStr() ;
private:
std::ostream &os ;
};
inline std::ostream &Logger::getOStr()
{
return os ;
}
#endif
//logger.cpp
#include "logger.h"
Logger::Logger(std::ostream &os_) : os(os_)
{
os<<"Hello.\n";
}
//code_finder_logger.h
#ifndef _CODE_FINDER_LOGGER_
#define _CODE_FINDER_LOGGER_
#include "code_finder.h"
#include "logger.h"
class CodeFinderLogger : public CodeFinder, private Logger
{
public:
CodeFinderLogger(std::ostream &os_) ;
void add(unsigned val) ;
void findWins() ;
private:
void find(std::vector<unsigned> &vec, long unsigned sum, unsigned index, unsigned depth) ;
};
#endif
//code_finder_logger.cpp
#include "code_finder_logger.h"
CodeFinderLogger::CodeFinderLogger(std::ostream &os_) : Logger(os_)
{
}
void CodeFinderLogger::add(unsigned val)
{
Logger::getOStr()<<"Added value: "<<val<<"\n" ;
CodeFinder::add(val) ;
}
void CodeFinderLogger::findWins()
{
Logger::getOStr()<<"Finding wins: START\n" ;
CodeFinder::findWins() ;
Logger::getOStr()<<"Finding wins: END\n" ;
}
void CodeFinderLogger::find(std::vector<unsigned> &vec, long unsigned sum, unsigned index, unsigned depth)
{
std::ostream &os = Logger::getOStr() ;
for(int i=0; i<depth; ++i)
{
os<<"| " ;
}
//os<<"find: sum="<<sum<<", index="<<index<<", depth="<<depth<<"\n" ;
if(isWin(sum))
{
addWin(vec) ;
os<<"WIN!!! " ;
}
for(int i=0; i<=depth; ++i)
{
os<<vec[i]<<(i==depth?" = ":"+") ;
}
os<<sum ;
if(isTooBig(sum))
{
os<<" - TOO BIG\n" ;
return ;
}
os<<"\n";
for(int i=1000; i<=10000; i+=1000)
{
int nec = getNecessaryToWin(i, sum) ;
if(nec>0)
{
addNecessaryToWin(nec, i) ;
for(int k=0; k<depth; ++k)
{
os<<"| --- " ;
}
os<<nec<<" to win "<<i<<"\n" ;
}
}
long unsigned newSum ;
for(int i=index+1; i<values.size() ; ++i)
{
vec.resize(depth+1) ;
vec.push_back(values[i]) ;
newSum = sum+values[i] ;
find(vec,newSum,i, depth+1) ;
}
}
//main.cpp
#include "code_finder_logger.h"
#include <cassert>
#include <fstream>
#include <iostream>
void readCodes(CodeFinder &finder, std::istream &is) ;
void writeWins(CodeFinder &finder, std::ostream &os) ;
void writeNecessaryToWin(CodeFinder &finder, std::ostream &os) ;
int main(int argc, char **argv)
{
std::ifstream ifs("we.txt") ;
assert(ifs.is_open()) ;
std::ofstream ofs("wy.txt") ;
std::ofstream ofs2("wy_necessary.txt") ;
CodeFinderLogger finder(ofs) ;
readCodes(finder, ifs) ;
finder.findWins() ;
writeWins(finder, std::cout) ;
writeNecessaryToWin(finder, ofs2) ;
return 0 ;
}
void readCodes(CodeFinder &finder, std::istream &is)
{
unsigned value ;
do
{
is>>value ;
if(value)
{
finder.add(value) ;
}
}while(value>0) ;
}
void writeWins(CodeFinder &finder, std::ostream &os)
{
os<<"\nYou win "<<finder.getNumberOfWins()<<":\n" ;
for(int i=0; i<finder.getNumberOfWins(); ++i)
{
os<<"\t" ;
long unsigned sum=0 ;
std::vector<unsigned> &win = finder.getWin(i) ;
for(int j=0; j<win.size(); ++j)
{
sum += win[j] ;
os<<win[j]<<(j==win.size()-1?" = ":"+") ;
}
os<<sum<<"\n" ;
}
}
void writeNecessaryToWin(CodeFinder &finder, std::ostream &os)
{
if(finder.getNumberOfWins()==0)
{
for(int i=1; i<10000; ++i)
{
unsigned wins = finder.getWinsForNecessary(i) ;
if(wins)
{
os<<i<<": {" ;
bool coma=0 ;
for(int j=1000; j<=10000; j+=1000)
{
if(finder.isWinOfNecessary(i,j))
{
if(coma)
{
os<<", " ;
}
else
{
coma=1 ;
}
os<<j ;
}
}
os<<"}\n";
}
}
}
}
Program napisany na szybko, dosyć niedbale, bez testów. Jedyne testy jakie przeprowadziłem, to "na oko" dla przykładowych danych, dla których wyniki mogłem sobie przewidzieć w pamięci i porównać z tym co wyszło. Jak się upewniłem, że działa, zarzuciłem mu plik wejściowy:
3245
1925
1430
2365
825
1815
1485
1540
2530
3190
1925
2750
165
770
1100
1760
2530
2750
2530
550
2420
550
1925
1980
605
2695
550
1155
3190
3300
0
na wyjściu dostałem:
You win 0:
Trudno. Zobaczmy czego mi brakuje do szczęścia:
5: {6000}
10: {1000}
15: {7000}
20: {2000}
25: {8000}
30: {3000}
35: {9000}
40: {4000}
45: {10000}
50: {5000}
60: {6000}
65: {1000}
70: {7000}
75: {2000}
80: {8000}
85: {3000}
90: {9000}
95: {4000}
100: {10000}
105: {5000}
115: {6000}
125: {7000}
130: {2000}
135: {8000}
140: {3000}
145: {9000}
150: {4000}
155: {10000}
160: {5000}
170: {6000}
175: {1000}
180: {7000}
185: {2000}
190: {8000}
195: {3000}
200: {9000}
205: {4000}
210: {10000}
215: {5000}
225: {6000}
230: {1000}
235: {7000}
240: {2000}
245: {8000}
250: {3000}
255: {9000}
260: {4000}
265: {10000}
270: {5000}
280: {6000}
285: {1000}
290: {7000}
295: {2000}
300: {8000}
305: {3000}
310: {9000}
315: {4000}
320: {10000}
325: {5000}
335: {6000}
345: {7000}
350: {2000}
355: {8000}
360: {3000}
365: {9000}
370: {4000}
375: {10000}
380: {5000}
390: {6000}
395: {1000}
400: {7000}
405: {2000}
410: {8000}
415: {3000}
420: {9000}
425: {4000}
430: {10000}
435: {5000}
445: {6000}
450: {1000}
455: {7000}
460: {2000}
465: {8000}
470: {3000}
475: {9000}
480: {4000}
485: {10000}
490: {5000}
500: {6000}
510: {7000}
515: {2000}
520: {8000}
525: {3000}
530: {9000}
535: {4000}
540: {10000}
545: {5000}
555: {6000}
565: {7000}
570: {2000}
575: {8000}
580: {3000}
585: {9000}
590: {4000}
595: {10000}
600: {5000}
610: {6000}
620: {7000}
625: {2000}
630: {8000}
635: {3000}
640: {9000}
645: {4000}
650: {10000}
655: {5000}
665: {6000}
675: {7000}
680: {2000}
685: {8000}
690: {3000}
695: {9000}
700: {4000}
705: {10000}
710: {5000}
720: {6000}
730: {7000}
735: {2000}
740: {8000}
745: {3000}
750: {9000}
755: {4000}
760: {10000}
765: {5000}
775: {6000}
785: {7000}
795: {8000}
800: {3000}
805: {9000}
810: {4000}
815: {10000}
820: {5000}
830: {6000}
835: {1000}
840: {7000}
845: {2000}
850: {8000}
855: {3000}
860: {9000}
865: {4000}
870: {10000}
875: {5000}
885: {6000}
895: {7000}
900: {2000}
905: {8000}
910: {3000}
915: {9000}
920: {4000}
925: {10000}
930: {5000}
940: {6000}
950: {7000}
960: {8000}
965: {3000}
970: {9000}
975: {4000}
980: {10000}
985: {5000}
995: {6000}
1005: {7000}
1010: {2000}
1015: {8000}
1020: {3000}
1025: {9000}
1030: {4000}
1035: {10000}
1040: {5000}
1050: {6000}
1060: {7000}
1065: {2000}
1070: {8000}
1075: {3000}
1080: {9000}
1085: {4000}
1090: {10000}
1095: {5000}
1105: {6000}
1115: {7000}
1125: {8000}
1130: {3000}
1135: {9000}
1140: {4000}
1145: {10000}
1150: {5000}
1160: {6000}
1170: {7000}
1175: {2000}
1180: {8000}
1185: {3000}
1190: {9000}
1195: {4000}
1200: {10000}
1205: {5000}
1215: {6000}
1225: {7000}
1230: {2000}
1235: {8000}
1240: {3000}
1245: {9000}
1250: {4000}
1255: {10000}
1260: {5000}
1270: {6000}
1280: {7000}
1285: {2000}
1290: {8000}
1295: {3000}
1300: {9000}
1305: {4000}
1310: {10000}
1315: {5000}
1325: {6000}
1335: {7000}
1345: {8000}
1350: {3000}
1355: {9000}
1360: {4000}
1365: {10000}
1370: {5000}
1380: {6000}
1390: {7000}
1395: {2000}
1400: {8000}
1405: {3000}
1410: {9000}
1415: {4000}
1420: {10000}
1425: {5000}
1435: {6000}
1445: {7000}
1450: {2000}
1455: {8000}
1460: {3000}
1465: {9000}
1470: {4000}
1475: {10000}
1480: {5000}
1490: {6000}
1500: {7000}
1510: {8000}
1515: {3000}
1520: {9000}
1525: {4000}
1530: {10000}
1535: {5000}
1545: {6000}
1555: {7000}
1565: {8000}
1570: {3000}
1575: {9000}
1580: {4000}
1585: {10000}
1590: {5000}
1600: {6000}
1610: {7000}
1620: {8000}
1625: {3000}
1630: {9000}
1635: {4000}
1640: {10000}
1645: {5000}
1655: {6000}
1665: {7000}
1675: {8000}
1680: {3000}
1685: {9000}
1690: {4000}
1695: {10000}
1700: {5000}
1710: {6000}
1720: {7000}
1730: {8000}
1735: {3000}
1740: {9000}
1745: {4000}
1750: {10000}
1755: {5000}
1765: {6000}
1775: {7000}
1785: {8000}
1795: {9000}
1800: {4000}
1805: {10000}
1810: {5000}
1820: {6000}
1830: {7000}
1835: {2000}
1840: {8000}
1845: {3000}
1850: {9000}
1855: {4000}
1860: {10000}
1865: {5000}
1875: {6000}
1885: {7000}
1895: {8000}
1900: {3000}
1905: {9000}
1910: {4000}
1915: {10000}
1920: {5000}
1930: {6000}
1940: {7000}
1950: {8000}
1960: {9000}
1965: {4000}
1970: {10000}
1975: {5000}
1985: {6000}
1995: {7000}
2005: {8000}
2010: {3000}
2015: {9000}
2020: {4000}
2025: {10000}
2030: {5000}
2040: {6000}
2050: {7000}
2060: {8000}
2065: {3000}
2070: {9000}
2075: {4000}
2080: {10000}
2085: {5000}
2095: {6000}
2105: {7000}
2115: {8000}
2125: {9000}
2130: {4000}
2135: {10000}
2140: {5000}
2150: {6000}
2160: {7000}
2170: {8000}
2175: {3000}
2180: {9000}
2185: {4000}
2190: {10000}
2195: {5000}
2205: {6000}
2215: {7000}
2225: {8000}
2230: {3000}
2235: {9000}
2240: {4000}
2245: {10000}
2250: {5000}
2260: {6000}
2270: {7000}
2280: {8000}
2285: {3000}
2290: {9000}
2295: {4000}
2300: {10000}
2305: {5000}
2315: {6000}
2325: {7000}
2335: {8000}
2345: {9000}
2350: {4000}
2355: {10000}
2360: {5000}
2370: {6000}
2380: {7000}
2390: {8000}
2395: {3000}
2400: {9000}
2405: {4000}
2410: {10000}
2415: {5000}
2425: {6000}
2435: {7000}
2445: {8000}
2450: {3000}
2455: {9000}
2460: {4000}
2465: {10000}
2470: {5000}
2480: {6000}
2490: {7000}
2500: {8000}
2510: {9000}
2515: {4000}
2520: {10000}
2525: {5000}
2535: {6000}
2545: {7000}
2555: {8000}
2565: {9000}
2570: {4000}
2575: {10000}
2580: {5000}
2590: {6000}
2600: {7000}
2610: {8000}
2620: {9000}
2625: {4000}
2630: {10000}
2635: {5000}
2645: {6000}
2655: {7000}
2665: {8000}
2675: {9000}
2680: {4000}
2685: {10000}
2690: {5000}
2700: {6000}
2710: {7000}
2720: {8000}
2730: {9000}
2735: {4000}
2740: {10000}
2745: {5000}
2755: {6000}
2765: {7000}
2775: {8000}
2785: {9000}
2795: {10000}
2800: {5000}
2810: {6000}
2820: {7000}
2830: {8000}
2835: {3000}
2840: {9000}
2845: {4000}
2850: {10000}
2855: {5000}
2865: {6000}
2875: {7000}
2885: {8000}
2895: {9000}
2900: {4000}
2905: {10000}
2910: {5000}
2920: {6000}
2930: {7000}
2940: {8000}
2950: {9000}
2960: {10000}
2965: {5000}
2975: {6000}
2985: {7000}
2995: {8000}
3005: {9000}
3010: {4000}
3015: {10000}
3020: {5000}
3030: {6000}
3040: {7000}
3050: {8000}
3060: {9000}
3065: {4000}
3070: {10000}
3075: {5000}
3085: {6000}
3095: {7000}
3105: {8000}
3115: {9000}
3125: {10000}
3130: {5000}
3140: {6000}
3150: {7000}
3160: {8000}
3170: {9000}
3175: {4000}
3180: {10000}
3185: {5000}
3195: {6000}
3205: {7000}
3215: {8000}
3225: {9000}
3230: {4000}
3235: {10000}
3240: {5000}
3250: {6000}
3260: {7000}
3270: {8000}
3280: {9000}
3285: {4000}
3290: {10000}
3295: {5000}
3305: {6000}
3315: {7000}
3325: {8000}
3335: {9000}
3345: {10000}
3350: {5000}
3360: {6000}
3370: {7000}
3380: {8000}
3390: {9000}
3395: {4000}
3400: {10000}
3405: {5000}
3415: {6000}
3425: {7000}
3435: {8000}
3445: {9000}
3450: {4000}
3455: {10000}
3460: {5000}
3470: {6000}
3480: {7000}
3490: {8000}
3500: {9000}
3510: {10000}
3515: {5000}
3525: {6000}
3535: {7000}
3545: {8000}
3555: {9000}
3565: {10000}
3570: {5000}
3580: {6000}
3590: {7000}
3600: {8000}
3610: {9000}
3620: {10000}
3625: {5000}
3635: {6000}
3645: {7000}
3655: {8000}
3665: {9000}
3675: {10000}
3680: {5000}
3690: {6000}
3700: {7000}
3710: {8000}
3720: {9000}
3730: {10000}
3735: {5000}
3745: {6000}
3755: {7000}
3765: {8000}
3775: {9000}
3785: {10000}
3800: {6000}
3810: {7000}
3820: {8000}
3830: {9000}
3835: {4000}
3840: {10000}
3845: {5000}
3855: {6000}
3865: {7000}
3875: {8000}
3885: {9000}
3895: {10000}
3900: {5000}
3910: {6000}
3920: {7000}
3930: {8000}
3940: {9000}
3950: {10000}
3965: {6000}
3975: {7000}
3985: {8000}
3995: {9000}
4005: {10000}
4010: {5000}
4020: {6000}
4030: {7000}
4040: {8000}
4050: {9000}
4060: {10000}
4065: {5000}
4075: {6000}
4085: {7000}
4095: {8000}
4105: {9000}
4115: {10000}
4130: {6000}
4140: {7000}
4150: {8000}
4160: {9000}
4170: {10000}
4175: {5000}
4185: {6000}
4195: {7000}
4205: {8000}
4215: {9000}
4225: {10000}
4230: {5000}
4240: {6000}
4250: {7000}
4260: {8000}
4270: {9000}
4280: {10000}
4285: {5000}
4295: {6000}
4305: {7000}
4315: {8000}
4325: {9000}
4335: {10000}
4350: {6000}
4360: {7000}
4370: {8000}
4380: {9000}
4390: {10000}
4395: {5000}
4405: {6000}
4415: {7000}
4425: {8000}
4435: {9000}
4445: {10000}
4450: {5000}
4460: {6000}
4470: {7000}
4480: {8000}
4490: {9000}
4500: {10000}
4515: {6000}
4525: {7000}
4535: {8000}
4545: {9000}
4555: {10000}
4570: {6000}
4580: {7000}
4590: {8000}
4600: {9000}
4610: {10000}
4625: {6000}
4635: {7000}
4645: {8000}
4655: {9000}
4665: {10000}
4680: {6000}
4690: {7000}
4700: {8000}
4710: {9000}
4720: {10000}
4735: {6000}
4745: {7000}
4755: {8000}
4765: {9000}
4775: {10000}
4800: {7000}
4810: {8000}
4820: {9000}
4830: {10000}
4835: {5000}
4845: {6000}
4855: {7000}
4865: {8000}
4875: {9000}
4885: {10000}
4900: {6000}
4910: {7000}
4920: {8000}
4930: {9000}
4940: {10000}
4965: {7000}
4975: {8000}
4985: {9000}
4995: {10000}
5010: {6000}
5020: {7000}
5030: {8000}
5040: {9000}
5050: {10000}
5065: {6000}
5075: {7000}
5085: {8000}
5095: {9000}
5105: {10000}
5130: {7000}
5140: {8000}
5150: {9000}
5160: {10000}
5175: {6000}
5185: {7000}
5195: {8000}
5205: {9000}
5215: {10000}
5230: {6000}
5240: {7000}
5250: {8000}
5260: {9000}
5270: {10000}
5285: {6000}
5295: {7000}
5305: {8000}
5315: {9000}
5325: {10000}
5350: {7000}
5360: {8000}
5370: {9000}
5380: {10000}
5395: {6000}
5405: {7000}
5415: {8000}
5425: {9000}
5435: {10000}
5450: {6000}
5460: {7000}
5470: {8000}
5480: {9000}
5490: {10000}
5515: {7000}
5525: {8000}
5535: {9000}
5545: {10000}
5570: {7000}
5580: {8000}
5590: {9000}
5600: {10000}
5625: {7000}
5635: {8000}
5645: {9000}
5655: {10000}
5680: {7000}
5690: {8000}
5700: {9000}
5710: {10000}
5735: {7000}
5745: {8000}
5755: {9000}
5765: {10000}
5800: {8000}
5810: {9000}
5820: {10000}
5835: {6000}
5845: {7000}
5855: {8000}
5865: {9000}
5875: {10000}
5900: {7000}
5910: {8000}
5920: {9000}
5930: {10000}
5965: {8000}
5975: {9000}
5985: {10000}
6010: {7000}
6020: {8000}
6030: {9000}
6040: {10000}
6065: {7000}
6075: {8000}
6085: {9000}
6095: {10000}
6130: {8000}
6140: {9000}
6150: {10000}
6175: {7000}
6185: {8000}
6195: {9000}
6205: {10000}
6230: {7000}
6240: {8000}
6250: {9000}
6260: {10000}
6285: {7000}
6295: {8000}
6305: {9000}
6315: {10000}
6350: {8000}
6360: {9000}
6370: {10000}
6395: {7000}
6405: {8000}
6415: {9000}
6425: {10000}
6450: {7000}
6460: {8000}
6470: {9000}
6480: {10000}
6515: {8000}
6525: {9000}
6535: {10000}
6570: {8000}
6580: {9000}
6590: {10000}
6625: {8000}
6635: {9000}
6645: {10000}
6680: {8000}
6690: {9000}
6700: {10000}
6735: {8000}
6745: {9000}
6755: {10000}
6800: {9000}
6810: {10000}
6835: {7000}
6845: {8000}
6855: {9000}
6865: {10000}
6900: {8000}
6910: {9000}
6920: {10000}
6965: {9000}
6975: {10000}
7010: {8000}
7020: {9000}
7030: {10000}
7065: {8000}
7075: {9000}
7085: {10000}
7130: {9000}
7140: {10000}
7175: {8000}
7185: {9000}
7195: {10000}
7230: {8000}
7240: {9000}
7250: {10000}
7285: {8000}
7295: {9000}
7305: {10000}
7350: {9000}
7360: {10000}
7395: {8000}
7405: {9000}
7415: {10000}
7450: {8000}
7460: {9000}
7470: {10000}
7515: {9000}
7525: {10000}
7570: {9000}
7580: {10000}
7625: {9000}
7635: {10000}
7680: {9000}
7690: {10000}
7735: {9000}
7745: {10000}
7800: {10000}
7835: {8000}
7845: {9000}
7855: {10000}
7900: {9000}
7910: {10000}
7965: {10000}
8010: {9000}
8020: {10000}
8065: {9000}
8075: {10000}
8130: {10000}
8175: {9000}
8185: {10000}
8230: {9000}
8240: {10000}
8285: {9000}
8295: {10000}
8350: {10000}
8395: {9000}
8405: {10000}
8450: {9000}
8460: {10000}
8515: {10000}
8570: {10000}
8625: {10000}
8680: {10000}
8735: {10000}
8835: {9000}
8845: {10000}
8900: {10000}
9010: {10000}
9065: {10000}
9175: {10000}
9230: {10000}
9285: {10000}
9395: {10000}
9450: {10000}
9835: {10000}
okazuje się, że wystarczy jedna z 877 liczb (2 strony A4 czcionką 8), aby wygrać! tyle możliwości, nic tylko drukować i przeszukiwać półki sklepowe:)
ale gdy się patrzy na liczby wejściowe i oczekiwane, to trudno znaleźć w oczekiwanych liczby, która się powtarza w wejściowych... no cóż, prezentów nikt nie rozdaje, oni po prostu na tym zarabiają.
jak będę miał czas i będzie mi się chciało, to poprawię ten programik, dodam moduły porównawcze i statystyczne ;)
a może ktoś ma jakieś opakowania po proszkach, gdzie jest kwota, która mi brakuje? oczywiście sprawiedliwy podział nagrody :D