/*20140325 hanting*/
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int N;
cin>>N;
while(N--)
{
int e,f,c;
cin>>e>>f>>c;
e+=f;
int ans=0;
while(e/c)
{
ans+=e/c;
e=e/c+e%c;
}
cout<<ans<<endl;
}
return 0;
}
2014年3月24日 星期一
[UVA] 11689 - Soda Surpler
[UVA] 11192 - Group Reverse
/*20140325 hanting*/
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int N;
while(cin>>N && N!=0)
{
string s;
string ans="";
cin>>s;
for(int i=0;i<s.size();i+=(s.size()/N))
{
string ss=s.substr(i,(s.size()/N));
reverse(ss.begin(),ss.end());
ans+=ss;
}
cout<<ans<<endl;
}
return 0;
}
[UVA] 10042 - Smith numbers
/*20140325 hanting*/
#include <iostream>
#include <cmath>
using namespace std;
int m=0;
int Prime[10000];
int num_total(int num)
{
int total=0;
while(num)
{
total+=num%10;
num/=10;
}
return total;
}
bool prime(int num)
{
for(int i=0;i<m && Prime[i]<=ceil(sqrt(num));i++)
{
if(num%Prime[i]==0 && num!=2)
{
return 0;
break;
}
if(Prime[i+1]>ceil(sqrt(num)))
{
return 1;
break;
}
}
}
int SmithNumber_total(int num)
{
int total=0;
for(int i=0;i<m && i<=num;i++)
{
while(num%Prime[i]==0)
{
total+=num_total(Prime[i]);
num/=Prime[i];
}
if(prime(num)==1)
{
total+=num_total(num);
break;
}
}
return total;
}
int main()
{
int Num[50000]={0};
for(int i=2;i<50000;i++)
{
if(Num[i]==0)
{
Prime[m++]=i;
}
for(int j=i;j<50000;j+=i)
{
Num[j]=1;
}
}
int N;
cin>>N;
while(N--)
{
int num;
cin>>num;
while(++num)
{
if(prime(num)!=1)
{
if(SmithNumber_total(num)==num_total(num))
{
cout<<num<<endl;
break;
}
}
}
}
return 0;
}
2014年3月21日 星期五
[UVA] 490 - Rotating Sentences
/*20140321 hanting*/
#include <iostream>
using namespace std;
int main()
{
string s[1000];
int i;
int max=0;
for(i=0;i>=0;i++)
{
getline(cin,s[i]);
if(s[i].size()>max) max=s[i].size();
if(s[i]=="") break;
}
for(int j=0;j<max;j++)
{
for(int k=i-1;k>=0;k--)
{
j<s[k].size() ? cout<<s[k][j] : cout<<" ";
}
cout<<endl;
}
return 0;
}
2014年3月14日 星期五
[UVA] 762 - We Ship Cheap
/*20140314 hanting*/
#include <iostream>
using namespace std;
string st[1009][1009];
int main()
{
int space=0;
int N;
while(cin>>N)
{
if(space!=0) cout<<endl;
space=1;
string s[N+5][2];
string cpys[N+5][2];
for(int i=0;i<=N;i++)
{
cin>>s[i][0]>>s[i][1];
cpys[i][0]=s[i][0];
cpys[i][1]=s[i][1];
}
st[0][0]=s[N][1];
int m=0,n=1;
int temp,check=1;
for(int i=0;i>=0 && check==1;i++)
{
check=0;
for(int j=0;j<n ;j++)
{
for(int k=0;k<N;k++)
{
if(s[k][0]==st[i][j])
{
st[i+1][m++]=s[k][1];
s[k][1]="x";
check=1;
}
else if(s[k][1]==st[i][j])
{
st[i+1][m++]=s[k][0];
s[k][0]="x";
check=1;
}
if(st[i+1][m-1]==s[N][0])
{
j=n;temp=i;i=-2;
break;
}
}
}
n=m;m=0;
}
if(check==0)
{
cout<<"No route"<<endl;
continue;
}
string store=cpys[N][0];
for(int i=temp;i>=0;i--)
{
for(int j=0;j>=0;j++)
{
for(int k=0;k<N;k++)
{
if(st[i][j]==cpys[k][0] && cpys[k][1]==store)
{
cout<<cpys[k][1]<<" "<<cpys[k][0]<<endl;
store=cpys[k][0];
j=-2;break;
}
else if(st[i][j]==cpys[k][1] && cpys[k][0]==store)
{
cout<<cpys[k][0]<<" "<<cpys[k][1]<<endl;
store=cpys[k][1];
j=-2;break;
}
}
}
}
}
return 0;
}
2014年3月7日 星期五
[UVA] 11541 - Decoding
/*20140307 hanting*/
#include<iostream>
using namespace std;
int main()
{
int N;
cin>>N;
char endl;
cin.get(endl);
for(int time=1;time<=N;time++)
{
char c[1000];
int a[1000];
int i;
for(i=0;;i++)
{
cin.get(c[i]);
if(c[i]=='\n') break;
cin>>a[i];
}
cout<<"Case "<<time<<": ";
for(int j=0;j<i;j++)
{
for(int k=0;k<a[j];k++)
{
cout<<c[j];
}
}
cout<<endl;
}
return 0;
}
2014年3月6日 星期四
[UVA] 673 - Parentheses Balance
/*20140307 hanting*/
#include <iostream>
using namespace std;
int main()
{
int N;
cin>>N;
cin.get();
while(N--)
{
string s;
getline(cin,s);
int x=1;
while(x)
{
x=0;
if(s.find("()")<s.size())
{
s.erase(s.find("()"),2);
x=1;
}
if(s.find("[]")<s.size())
{
s.erase(s.find("[]"),2);
x=1;
}
}
if(s!="") cout<<"No"<<endl;
else cout<<"Yes"<<endl;
}
return 0;
}
2014年3月1日 星期六
[UVA] 263 - Number Chains
/*20140301 hanting*/
#include <iostream>
#include <cmath>
#include <algorithm>
#include <vector>
using namespace std;
int sortd(int a)
{
vector<int> sorta(0);
int d;//d位數
for(d=0;d<10;d++)//將a的每一位數字分開存入sorta陣列
{
if(a==0) break;
sorta.push_back(a%10);
a/=10;
}
sort(sorta.begin(),sorta.end());
reverse(sorta.begin(),sorta.end());
for(int i=0;i<d;i++)
{
a+=(sorta[i]*pow(10.,d-i-1));
}
return a;
}
int R(int a)
{
int Ra=0;
while(a)
{
Ra*=10;
Ra+=a%10;
a/=10;
}
return Ra;
}
int main()
{
int digit;
while(cin>>digit && digit!=0)
{
cout<<"Original number was "<<digit<<endl;
int count=0;
int temp[100]={0};
int i=0;
int n=1;
while(n)
{
temp[i]=digit;
count++;
cout<<sortd(digit)<<" - "<<R(sortd(digit))<<" = "<<sortd(digit)-R(sortd(digit))<<endl;
digit=sortd(digit)-R(sortd(digit));
i++;
for(int j=i-1;j>=0;j--)
{
if(digit==temp[j])
{
n=0;break;
}
}
}
cout<<"Chain length "<<count<<endl<<endl;
}
return 0;
}
/*另一寫法*/
/*20140721 hanting*/
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
void Itoa(int N,char *s,int ary)
{
int i=0;
for(i=0;i<25;i++)
{
s[i]=(N%ary)+48;
N/=ary;
if(N==0) break;
}
reverse(s,s+i+1);
s[i+1]=0;
}
int main()
{
int a;
while(cin>>a ,a)
{
cout<<"Original number was "<<a<<endl;
char s[15];
int chain=0;
int store[1000];
int True=1;
while(True)
{
store[chain]=a;
chain++;
Itoa(a,s,10);
sort(s,s+strlen(s));
a=atoi(s);
reverse(s,s+strlen(s));
int tema=atoi(s);
cout<<s<<" - "<<a<<" = "<<tema-a<<endl;
a=tema-a;
for(int i=0;i<chain;i++)
{
if(a==store[i])
{
True=0;break;
}
}
}
cout<<"Chain length "<<chain<<endl<<endl;
}
return 0;
}
訂閱:
文章 (Atom)