← Back to topics
Topic

tegovi

d
dimitar
Moj kod za ovaj problem je OK za svi testove, ali kad ga ispratim daje pogresno resenje za 2 i 6-10 test primere.

Evo koda, pa ko moze neka vidi, mozda je problem u pecatenje, ili nesto slicno:


//#include "stdafx.h"

//-------------------- begin -----------------------\\

#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>

using namespace std;

#define FOR(i,n) for (long i=0; i<(n); i++)
#define FORR(i,a,b) for (long i=(a); i<=(b); i++)
#define pb(x) push_back(x)
#define sz size()
#define V vector
#define L long


//----------------- declarations --------------------\\

V <L> l, r, a, b;
string s;

//------------------- program -----------------------\\

void input()
{
cin >> s;
FOR (i,s.sz) a.pb(s[i]-'0');
}

L dv()
{
L prenos = 0, t;

if (a[0] < 3) {
prenos = a[0];
if (a.sz == 1) b.pb(0);
}
else {
b.pb((int)(a[0]/3));
prenos = a[0] % 3;
}

FORR (i,1,a.sz-1) {
if (prenos)
t = 10 * prenos + a[i];
else
t = a[i];

if (t < 3) {
b.pb(0);
prenos = t;
}
else {
b.pb((int)(t/3));
prenos = t % 3;
}
}

a.clear();
FOR(i,b.sz) a.pb(b[i]);
b.clear();

return prenos;
}

void add()
{
L i = a.sz;
while (a[i] == 9) {
a[i] = 0; --i;
if (i < 0) {
a.insert(a.begin(), 0);
i = 0;
}
}
++a[i-1];
}

void print()
{
FOR(i,a.sz) cout << a[i];
cout << endl;
}

void solve()
{
L i = -1, t;
while (a[0]) {
++i;
t = dv();
//print();

if (t == 1)
l.insert(l.begin(), i);
else if (t == 2) {
r.insert(r.begin(), i);
add();
}
}
}

void output()
{
cout << l.sz << endl;
FOR(i,l.sz) cout << l[i] << endl;
cout << r.sz << endl;
FOR(i,r.sz) cout << r[i] << endl;
}

int main()
{
input();
solve();
output();

//system ("PAUSE");
return 0;
}

//--------------------- end -------------------------\\
d
dimitar
Jel moze neko ko je resio zadatak da mi prati kod na dimitarmisev@yahoo.com?
d
dimitar
relja i trobok - hvala!
t
trobok
nema na cemu
dodjite nam opet