http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=36
#include<iostream>
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
long trace2(long n)
{
if(n<=1)return 1;
long next1;
if(n%2==0)
next1=n/2;
else
next1=3*n+1;
return trace2(next1)+1;
}
int main(int argc, char *argv[])
{
int I=0,J=0,R=0;
while(cin>>I>>J)
{
long t,max=0;
if(I<J)
{
rep(i,I,J)
{
t=trace2(i);
if(t>max){max=t;}
}
}
else
{
rep(i,J,I)
{
t=trace2(i);
if(t>max){max=t;}
}
}
cout<<I<<" "<<J<<" "<<max<<endl;
}
return 0;
};
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=330
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int main(int argc, char** arg)
{
int N,R;
cin>>N>>R;
vector<string> name(N);
long B[N];
int size[N];
long D[N];
vector<long> upper[N];
vector<long> lower[N];
for(int i=0;i<N;i++)
{
cin>>name[i];
cin>>B[i];
cin>>size[i];
cin>>D[i];
upper[i].assign(D[i]+1,0l);
lower[i].assign(D[i]+1,0l);
for(int j=1;j<=D[i];j++)
{
cin>>lower[i][j]>>upper[i][j];
}
}
/*
for(int i=0;i<N;i++)
{
cout<<name[i]<<endl;
cout<<B[i]<<endl;
cout<<size[i]<<endl;
cout<<D[i]<<endl;
for(int j=1;j<=D[i];j++)
{
cout<<lower[i][j]<<","<<upper[i][j]<<endl;
}
}
*/
vector<long> cD[R];
vector<string> cname(R);
int cidx[R];
for(int i=0;i<R;i++)
{
cin>>cname[i];
cidx[i]=-1;
for(int i2=0;i2<N;i2++)
if(cname[i].compare(name[i2])==0)
{cidx[i]=i2;break;}
if(cidx[i]>=0)
{
cD[i].assign(D[cidx[i]]+1,0l);
for(int i2=1;i2<=D[cidx[i]];i2++)
{
cin>>cD[i][i2];
}
}
}
/*
for(int i=0;i<R;i++)
{
cout<<cname[i]<<endl;
cout<<cidx[i]<<endl;
for(int i2=1;i2<=D[cidx[i]];i2++)
cout<<cD[i][i2]<<",";
cout<<endl;
}
*/
vector<long> cC[R];
// main part
for(int i=0;i<R;i++)
{
if(cidx[i]>=0&&cidx[i]<N)
{
cC[i].assign(D[cidx[i]]+1,0l);
cC[i][D[cidx[i]]]=size[cidx[i]];
for(int d=D[cidx[i]]-1;d>=1;d--)
{
cC[i][d]=cC[i][d+1]*(upper[cidx[i]][d+1]-lower[cidx[i]][d+1]+1);
}
cC[i][0]=B[cidx[i]];
for(int d=D[cidx[i]];d>=1;d--)
cC[i][0]-=lower[cidx[i]][d]*cC[i][d];
long res=cC[i][0];
for(int i2=1l;i2<=D[cidx[i]];i2++)
res+=(cC[i][i2]*cD[i][i2]);
cout<<cname[i]<<"[";
for(int i2=1;i2<=D[cidx[i]];i2++)
{
if(i2!=1)
cout<<", ";
cout<<cD[i][i2];
}
cout<<"] = "<<res<<endl;
}
}
return 0;
}
// Written by Kevin C. Wong
// @JEngineTeam 2/9/2012
// 2-64 Base conversion: from any to any.
// You can increase the base more than 64 by appending m
// ore various characters to the lookup string
#include <iostream>
#include <vector>
#define rep(i,a,b) for(int i=a;i<=b;i++)
#define drep(i,a,b) for(int i=a;i>=b;i--)
using namespace std;
string lookup="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz@_";
string convert(string s,int x, int y)
{
if(x<=1||x>64)return "error";
if(y<=1||y>64)return "error";
if(s.compare("0")==0)return"0";
int l=s.length();
if(l==0)return"";
int ca=(int)lookup.find(s[l-1]);
string b=convert(s.substr(0,l-1),x,y);
int i=b.length()-1;
string t;
while(i>=0||ca>0)
{
int v=ca;
if(i>=0)
{
v+=lookup.find(b.at(i))*x;
}
t=lookup[v%y]+t;
ca=(int)(v/y);
i--;
}
return t;
}
int main(int argc, char** arg)
{
cout<<convert("1A5A7A902342734022348904583904829045760724907593",12,12)<<endl;
cout<<convert("1A5A7A902342734022348904583904829045760724907593",12,5)<<endl;
cout<<convert("4312311240132203424023310434144444444224420004343440124243024330432321104",5,5)<<endl;
cout<<convert("4312311240132203424023310434144444444224420004343440124243024330432321104",5,12)<<endl;
cout<<convert("1",7,19)<<endl;
cout<<convert("2",10,2)<<endl;
cout<<convert("0000000",7,19)<<endl;
cout<<convert("5",7,1)<<endl;
return 0;
}