西工大C语言POJ作业.docx
《西工大C语言POJ作业.docx》由会员分享,可在线阅读,更多相关《西工大C语言POJ作业.docx(18页珍藏版)》请在冰豆网上搜索。
![西工大C语言POJ作业.docx](https://file1.bdocx.com/fileroot1/2023-1/25/94ae51e9-f47e-442e-ba76-757cedc79aed/94ae51e9-f47e-442e-ba76-757cedc79aed1.gif)
西工大C语言POJ作业
T091、Houseboat
#include
#definePI3.1415926
intmain()
{
inti,n;
doubleyear,x,y;
scanf("%d",&n);
for(i=0;i{
scanf("%lf%lf",&x,&y);
year=PI*(x*x+y*y)/100;
printf("%d%d\n",i+1,(int)year+1);
}
return0;
}
T092、Sticks
#include
#include
#include
intlen[64],n,minlen,get;
boolb[64];
intcmp(constvoid*a,constvoid*b)
{
return*(int*)a<*(int*)b?
1:
-1;
}
booldfs(intnowlen,intnowget,intcnt)
{
if(cnt>=n)returnfalse;
if(get==nowget)returntrue;
inti;
boolf=false;
if(nowlen==0)f=true;
for(i=cnt;i{
if(!
b[i])
{
if(len[i]+nowlen==minlen)
{
b[i]=true;
if(dfs(0,nowget+1,nowget))
returntrue;
b[i]=false;
returnfalse;
}
elseif(len[i]+nowlen{
b[i]=true;
if(dfs(nowlen+len[i],nowget,i+1))
returntrue;
b[i]=false;
if(f)returnfalse;
while(i+1}
}
}
returnfalse;
}
intmain()
{
inti,tollen;
while(scanf("%d",&n),n)
{
tollen=0;
intj=0,p;
for(i=0;i{
scanf("%d",&p);
if(p<=50)
{
len[j]=p;
tollen+=len[j];
j++;
}
}
n=j;
if(n==0)
{
printf("0\n");
continue;
}
qsort(len,n,sizeof(int),cmp);
for(minlen=len[0];;minlen++)
{
if(tollen%minlen)continue;
memset(b,0,sizeof(b));
get=tollen/minlen;
if(dfs(0,0,0))
{
printf("%d\n",minlen);
break;
}
}
}
return0;
}
T093、Checksumalgorithm:
#include
intmain()
{
chara[256];
inti,sum;
while(gets(a)&&a[0]!
='#')
{
sum=0;
for(i=0;a[i]!
='\0';i++)
if(a[i]!
='')
sum+=(i+1)*(a[i]-64);
printf("%d\n",sum);
}
return0;
}
T094、Bee:
#include
intmain()
{
intn,a,b,sum,i,t;
while(scanf("%d",&n)!
=EOF&&n!
=-1)
{
a=1,b=0,sum=0;
for(i=0;i{
t=a;
a=b+1;
b=t+b;
sum=a+b;
}
printf("%d%d\n",b,sum);
}
return0;
}
T095、Graveyard:
#include
#include
intmain()
{
intn,m,i;
doubles,a;
while((scanf("%d%d",&n,&m))!
=EOF)
{
if(n==0&&m==0)break;
s=0;
for(i=1;i{
a=i*1.0/n*(n+m);
s+=fabs(a-floor(a+0.5))/(n+m);/*放缩坐标系floor(a+0.5))/(n+m)
找到离这个对应坐标的最近一个点取得距离累加移动距离*/
}
printf("%.4f\n",s*10000);
}
return0;
}
T096、Roadtrip
#include
intmain()
{
intn,i,speed,hour,h,s;//s是路程,h是上次的时间
while(scanf("%d",&n)&&n!
=-1)
{
s=0;
h=0;
for(i=1;i<=n;i++)
{
scanf("%d%d",&speed,&hour);
s+=speed*(hour-h);
h=hour;
}
printf("%d",s);
}
return0;
}
T097、HanoiII
#include
#defineM70
intstart[M],targe[M];
longlongf(int*p,intk,intfina)
{
if(k==0)return0;
if(p[k]==fina)returnf(p,k-1,fina);
returnf(p,k-1,6-fina-p[k])+(1LL<<(k-1));
}
intmain()
{
longlongans;
intn,cas=0;
while(scanf("%d",&n),n)
{
for(inti=1;i<=n;i++)scanf("%d",&start[i]);
for(inti=1;i<=n;i++)scanf("%d",&targe[i]);
intc=n;
for(;c>=1&&start[c]==targe[c];c--);
if(c==0){printf("0\n");continue;}
intother=6-start[c]-targe[c];
ans=f(start,c-1,other)+f(targe,c-1,other)+1;
printf("%lld\n",ans);
}
return0;
}
T098、Redistributewealth
#include
#include
#include
#include
longlongmoney[1000001];
longlongC[1000001];
intmain()
{
intn,t,i,j;
while(scanf("%d",&n)==1)
{
inti;
longlongsum=0;
for(i=1;i<=n;++i)
{
scanf("%lld",&money[i]);
sum+=money[i];
}
longlongM=sum/n;
C[1]=money[1]-M;
C[0]=0;
for(i=2;i<=n-1;++i)
{C[i]=C[i-1]+money[i]-M;
}
for(i=0;ifor(j=0;jif(C[j]>C[j+1])
{
t=C[j];
C[j]=C[j+1];
C[j+1]=t;
}
longlongmid=C[n/2];
longlongsum1=0;
for(i=0;i<=n-1;++i)
sum1+=abs(mid-C[i]);
printf("%lld\n",sum1);
}
return0;
}
T099、Dexterneedhelp:
#include
intfun(inta)
{
if(a==1)return1;
else
returnfun(a/2)+1;
}
intmain()
{
inta,x;
while(scanf("%d",&a)&&a!
=0)
{
x=fun(a);
printf("%d\n",x);
}
return0;
}
T100、SpecializedNumbers
#include
intfun(inti,intr)
{
ints=0;
while(i)
{
s+=i%r;
i/=r;
}
returns;
}
intmain()
{
inti;
for(i=2992;i<10000;i++)
if(fun(i,10)==fun(i,12)&&fun(i,12)==fun(i,16))
printf("%d\n",i);
return0;
}
T100、SpecializedNumbers
#include
intfun(inti,intr)
{
ints=0;
while(i)
{
s+=i%r;
i/=r;
}
returns;
}
intmain()
{
inti;
for(i=2992;i<10000;i++)
if(fun(i,10)==fun(i,12)&&fun(i,12)==fun(i,16))
printf("%d\n",i);
return0;
}
(3)#include
intmain()
{
inti,n,sum10,sum12,sum16;
for(i=2992;i<10000;i++){
n=i;
sum10=0;
while(n){
sum10+=n%10;
n/=10;
}
n=i;
sum12=0;
while(n){
sum12+=n%12;
n/=12;
}
n=i;
sum16=0;
while(n){
sum16+=n%16;
n/=16;
}
if(sum10==sum12&&sum12==sum16)printf("%d\n",i);
}
return0;
}