就A了两题。。。。。。。

Description

There is sequence 1, 12, 123, 1234, ..., 12345678910, ... . Given first N elements of that sequence. You must determine amount of numbers in it that are divisible by 3.

Input

Input contains N (1<=N<=231 - 1).

Output

Write answer to the output.

Sample Input

4Sample Output

2//此题用了数论中一个重要的结论

判断一个数是否能被某个数整除，只要把这个数的各位加起来能否被这个数整除，接下来就是找规律了

#include<stdio.h>

int main()

{

int n;

while(scanf("%d",&n)!=EOF)

{

if(n==1)

printf("0");

else if(n==2)

printf("1");

else if(n%3==0)

printf("%d",n-n/3);

else if((n-1)%3==0)

printf("%d",n-1-(n-1)/3);

else if((n-2)%3==0)

printf("%d",n-2-(n-2)/3+1);

printf("\n");

}

return 0;

}

Description

My birthday is coming up and traditionally I'm serving pie. Not just one pie, no, I have a number N of them, of various tastes and of various sizes. F of my friends are coming to my party and each of them gets a piece of pie. This should be one piece of one pie, not several small pieces since that looks messy. This piece can be one whole pie though.

My friends are very annoying and if one of them gets a bigger piece than the others, they start complaining. Therefore all of them should get equally sized (but not necessarily equally shaped) pieces, even if this leads to some pie getting spoiled (which is better than spoiling the party). Of course, I want a piece of pie for myself too, and that piece should also be of the same size.

What is the largest possible piece size all of us can get? All the pies are cylindrical in shape and they all have the same height 1, but the radii of the pies can be different.

Input

One line with a positive integer: the number of test cases. Then for each test case:

---One line with two integers N and F with 1 <= N, F <= 10 000: the number of pies and the number of friends.

---One line with N integers ri with 1 <= ri <= 10 000: the radii of the pies.

Output

For each test case, output one line with the largest possible volume V such that me and my friends can all get a pie piece of size V. The answer should be given as a floating point number with an absolute error of at most 10^(-3).

Sample Input

3 3 3 4 3 3 1 24 5 10 5 1 4 2 3 4 5 6 5 4 2

Sample Output

25.1327 3.1416 50.2655

//二分解题

#include<cstdio>

#include<cmath>

#include<iostream>

#include<iomanip>

using namespace std;

#define N 10000+5

//#define PI 3.14159265359 这儿最易出错

int a[N];

double V[N];

int main()

{

int t,n,i,f;

scanf("%d",&t);

double sum;

while(t--)

{

sum=0;

scanf("%d%d",&n,&f);

for(i=1;i<=n;i++)

{

scanf("%d",&a[i]);

V[i]=a[i]*a[i]*acos(-1); //用acos(-1)精度会更高，用预定义的PI,wa了N遍

sum+=V[i];

}

double v=sum/(f+1);

double L=0,R=v,minal;

while(fabs(R-L)>1e-6)

{

int flag=0,num;

minal=(R+L)/2;

for(i=1;i<=n;i++)

{

num=V[i]/minal;

flag+=num;

}

if(flag>=f+1)

L=minal;

else

R=minal;

}

cout<<fixed<<setprecision(4)<<minal<<endl;

}

return 0;

}

评论

© 现实给了梦想多少时间 | Powered by LOFTER