简单数组,递归


#include<iostream>
using namespace std;
char d[600000];
void rplace(int i,int j)
{
int p;
if(i==j) ;
else if(j-i==2)
d[i+1]=' ';
else
{
for(p=(i+(j-i+1)/3);p<(i+(j-i+1)*2/3);p++)
d[p]=' ';
rplace(i,i+(j-i+1)/3-1);
rplace(i+(j-i+1)*2/3,j);
}
}
int main()
{
int k,len,i;
while(cin>>k)
{
len=1;
for(i=0;i<k;i++)
len*=3;
for(i=0;i<len;i++)
d[i]='-';
rplace(0,len-1);
for(i=0;i<len;i++)
cout<<d[i];
cout<<endl;
}
return 0;
}
绘图的,也是数组,不过有点意思


#include<iostream>
using namespace std;
char bitmap[32][32];
int start_x,start_y,x,y;
char move[10000];
int len;
void initbmp()
{
int i,j;
for(i=0;i<32;i++)
for(j=0;j<32;j++)
bitmap[i][j]='.';
}
int main()
{
int test,i,j,k=1;
cin>>test;
while(test--)
{
initbmp();
cin>>start_x>>start_y;
cin>>move;
len=strlen(move);
x=start_x;y=start_y;
for(i=0;i<len-1;i++)
{
switch(move[i])
{
case 'E':{bitmap[y-1][x]='X';x++;}break;
case 'N':{bitmap[y][x]='X';y++;}break;
case 'W':{bitmap[y][x-1]='X';x--;}break;
case 'S':{bitmap[y-1][x-1]='X';y--;}break;
}
}
cout<<"Bitmap #"<<k<<endl;
for(i=31;i>=0;i--)
{
for(j=0;j<32;j++)
cout<<bitmap[i][j];
cout<<endl;
}
k++;
cout<<endl;
}
return 0;
}
TOJ 2084. Biker's Trip Odometer
超简单的


#include<iostream>
#define pi 3.1415927
using namespace std;
int main()
{
float dia,time,distance,mph;
int n,k=1;
while(cin>>dia>>n>>time&&n!=0)
{
distance=pi*dia/12/5280*n;
mph=distance/(time/3600);
printf("Trip #%d: %.2f %.2f\n",k++,distance,mph);
}
}
简单


#include<iostream>
using namespace std;
int main()
{
int test,sum,d,max,min;
cin>>test;
while(test--)
{
cin>>sum>>d;
max=sum+d;
min=sum-d;
if(max<0||min<0||max%2!=0)
{
printf("impossible\n");
}
else
printf("%d %d\n",max/2,min/2);
}
return 0;
}
简单递归


#include<iostream>
using namespace std;
int f91(int n)
{
if(n<=100)
return f91(f91(n+11));
else
return n-10;
}
int main()
{
int n;
while(cin>>n&&n!=0)
{
cout<<"f91("<<n<<") = "<<f91(n)<<endl;
}
}
格式有点麻烦


#include<iostream.h>
#include<iomanip.h>
#include<stdio.h>
int main()
{
cout<<"n e"<<endl;
cout<<"- -----------"<<endl;
double e=0,s,i,j;
for(i=0;i<=9;i++)
{
s=1;e=1/s;
for(j=1;j<=i;j++)
{s*=j;
e+=1/s;}
if(i<3)
cout<<i<<' '<<setprecision(10)<<e<<endl;
else
printf("%.0f %.9f\n",i,e);
}
return 0;
}
TOJ 1637. Specialized Four-Digit Numbers
进制转换


#include<iostream>
using namespace std;
bool solve(int n){
int a=0,b=0,c=0,num;
num=n;
while(num){
a+=num%10;
num/=10;
}
num=n;
while(num){
b+=num%16;
num/=16;
}
num=n;
while(num){
c+=num%12;
num/=12;
}
//cout<<"a="<<a<<"b="<<b<<endl;
if(a==b && a==c) return true;
else return false;
}
int main(){
for(int i=2992;i<10000;i++)
if(solve(i)) printf("%d\n",i);
return 0;
}