西工大C语言POJ作业文档格式.docx
《西工大C语言POJ作业文档格式.docx》由会员分享,可在线阅读,更多相关《西工大C语言POJ作业文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
T092、Sticks
string.h>
stdlib.h>
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<
n;
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<
minlen)
if(dfs(nowlen+len[i],nowget,i+1))
if(f)returnfalse;
while(i+1<
n&
&
len[i]==len[i+1])i++;
inti,tollen;
while(scanf("
&
n),n)
tollen=0;
intj=0,p;
for(i=0;
scanf("
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))
%d\n"
minlen);
break;
return0;
T093、Checksumalgorithm:
chara[256];
inti,sum;
while(gets(a)&
a[0]!
='
#'
)
sum=0;
a[i]!
\0'
;
if(a[i]!
'
sum+=(i+1)*(a[i]-64);
sum);
T094、Bee:
intn,a,b,sum,i,t;
while(scanf("
n)!
=EOF&
n!
=-1)
a=1,b=0,sum=0;
t=a;
a=b+1;
b=t+b;
sum=a+b;
b,sum);
T095、Graveyard:
math.h>
intn,m,i;
doubles,a;
while((scanf("
%d%d"
n,&
m))!
=EOF)
if(n==0&
m==0)break;
s=0;
for(i=1;
a=i*1.0/n*(n+m);
s+=fabs(a-floor(a+0.5))/(n+m);
/*放缩坐标系floor(a+0.5))/(n+m)
找到离这个对应坐标的最近一个点取得距离累加移动距离*/
%.4f\n"
s*10000);
T096、Roadtrip
#include<
intn,i,speed,hour,h,s;
//s是路程,h是上次的时间
n)&
n!
s=0;
h=0;
for(i=1;
=n;
%d%d"
speed,&
hour);
s+=speed*(hour-h);
h=hour;
s);
T097、HanoiII
#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;
for(inti=1;
=n;
i++)scanf("
start[i]);
targe[i]);
intc=n;
for(;
c>
=1&
start[c]==targe[c];
c--);
if(c==0){printf("
intother=6-start[c]-targe[c];
ans=f(start,c-1,other)+f(targe,c-1,other)+1;
%lld\n"
ans);
T098、Redistributewealth
longlongmoney[1000001];
longlongC[1000001];
intn,t,i,j;
n)==1)
inti;
longlongsum=0;
for(i=1;
++i)
%lld"
money[i]);
sum+=money[i];
longlongM=sum/n;
C[1]=money[1]-M;
C[0]=0;
for(i=2;
=n-1;
{C[i]=C[i-1]+money[i]-M;
n-1;
for(j=0;
j<
n-1-i;
j++)
if(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;
sum1+=abs(mid-C[i]);
sum1);
T099、Dexterneedhelp:
intfun(inta)
if(a==1)return1;
else
returnfun(a/2)+1;
inta,x;
a)&
a!
=0)
x=fun(a);
x);
T100、SpecializedNumbers
intfun(inti,intr)
ints=0;
while(i)
s+=i%r;
i/=r;
returns;
for(i=2992;
10000;
if(fun(i,10)==fun(i,12)&
fun(i,12)==fun(i,16))
i);
(3)#include<
inti,n,sum10,sum12,sum16;
for(i=2992;
i<
i++){
n=i;
sum10=0;
while(n){
sum10+=n%10;
n/=10;
sum12=0;
sum12+=n%12;
n/=12;
sum16=0;
sum16+=n%16;
n/=16;
if(sum10==sum12&
sum12==sum16)printf("
i);