计算机学院大学生程序设计竞赛(2015’11)
#include <iostream>
#include <stdio.h>
#include <math.h>
using namespace std;
int sum;
void solve(int m)
{
if(m==1)
return ;
int flag1 = m/2;
int flag2 = m-flag1;
//return solve(flag1)+solve(flag2)+flag2-flag1;
sum += (flag2-flag1);
solve(flag1);
solve(flag2);
}
int main()
{
int i,a,b,c,n,t;
scanf("%d",&n);
while(n--)
{
sum = 0;
scanf("%d",&t);
solve(t);
printf("%d\n",sum);
}
return 0;
}
#include <iostream>
#include <stdio.h>
#define N 10001
using namespace std;
int main()
{
int n,a,b,c,k,t,i;
int aa[N];
while(scanf("%d%d%d%d",&n,&a,&b,&c)!=EOF)
{
k = 0;
//cin>>n>>a>>b>>c;
//scanf("%d%d%d%d",&n,&a,&b,&c);
for(i = 1;i<=n;i++)
scanf("%d",&aa[i]);
for(i = 1;i<=n;i++){
//cin>>t;
//scanf("%d",&t);
t = aa[i];
if(t<a)
aa[i+1]+=aa[i];
else if((a<=t)&&(t<b))
k+=2;
else if((b<=t)&&(t<c))
k+=3;
else
k+=4;
}
//cout<<k<<endl;
printf("%d\n",k);
}
return 0;
}#include<iostream>
#include <stdio.h>
#include<math.h>
#include <cstdlib>
#define N 1230 //生成100000个质数
using namespace std;
int prime[N]; //一个全局数组,用来保存质数表
void makeprime()//生成质数表的子函数
{
int j,n=29,i=9,sqrtn;//从第10个质数开始计算,第10个质数是29
prime[0]=2;
prime[1]=3;
prime[2]=5;
prime[3]=7;
prime[4]=11;
prime[5]=13;
prime[6]=17;
prime[7]=19;
prime[8]=23; //之前已有9个质数在表中
while (i<N) //i是计数变量
{
j=0; //每次从表头开始试除
sqrtn=sqrt(n); //n的平方根
while (prime[j]<=sqrtn)
{
if (n%prime[j]==0)break; //若n能整除质数表中的某数,则跳出
j++;
}
if (prime[j]>sqrtn)
{
prime[i]=n;
i++;
}
n+=2; //除了2,偶数不会是质数,因此跳过所有偶数
}
}
void solve()
{
for(int i=1;i<N;i++)
prime[i-1] = prime[i-1]*prime[i-1];
}
int main()
{
int t,m,flag;
makeprime();
solve();
/*
for (int i=1; i<N; i++)
{
cout<<prime[i-1]<<" "; //每输出10个数换行
if (i%10==0)cout<<endl;
}
*/
scanf("%d",&t);
while(t--)
{
scanf("%d",&m);
int Max = 99999999;
for(int j = 1;j<N;j++)
if(abs(m-prime[j-1])<=Max){
// printf("%d %d\n",abs(m-prime[j-1]),Max);
Max = abs(m-prime[j-1]);
flag = prime[j-1];
//printf("%d\n",Max);
}
printf("%d\n",flag);
}
//system("pause");
return 0;
}#include <iostream>
#include <stdio.h>
#include <algorithm>
using namespace std;
int cmp(int a,int b)
{
return a<b;
}
int main()
{
int i,j,t;
int n,m,k,flag;
int a[10001],b[10001];
scanf("%d",&t);
while(t--)
{
long long sum1 = 0,sum2 = 0,index=0;
scanf("%d%d%d",&n,&m,&k);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
//sort(a+1,a+n+1);
for(j=1;j<=m;j++)
{
scanf("%d",&flag);
//b[i] = a[flag];
sum1+=a[flag];
a[flag]=0;
}
if(sum1>k)
index = -1;
else
{
sum2 = k-sum1;
//cout<<sum1<<" "<<sum2<<endl;
sort(a+1,a+n+1,cmp);
//for(i=1;i<=n;i++)
// cout<<a[i]<<" ";
for(i=1;i<=n;i++)
{
if(sum2>=a[i])
{
sum2-=a[i];
index++;
}
else
break;
}
//index+=m;
}
printf("%d\n",index);
//sort(b+1,b+m+1);
}
return 0;
}

浙公网安备 33010602011771号