25
C + + Excellent code
#include <iostream>
#include <vector>
#include <functional>
#include <algorithm>
#include <cmath>
using namespace Std;
Double Length (double r,double b)
{
Return 2*sqrt (R*R-B*B/4);
}
int main ()
{
const double l=20,w=2;
int n;
cin>>n;
while (n--)
{
int m;
cin>>m;
Double R;
Vector<double> Rs;
while (m--)
{
cin>>r;
Rs.push_back (R);
}
Sort (Rs.begin (), Rs.end (),greater<double> ());
Double sum=0;
int i;
For (I=0;i!=rs.size (); i++)
{
if (sum>l) break;
Sum+=length (RS[I],W);
}
cout<<i<<endl;
}
}
v1.0 C
#include <stdio.h>
#include <math.h>
#define SPRAYNUM 600
void QuickSort (double arr[], int left, int. right);
int main (void)
{
int m;
int n;
int k;
Int J;
Double ri[spraynum]={0};
scanf ("%d", &m);
GetChar ();
for (j = 0; j < m; ++j) {
scanf ("%d", &n);
GetChar ();
for (k = 0; k < n; ++k) {
scanf ("%lf", &ri[k]);
}
QuickSort (ri,0,n-1);
int sum=1;
Double tmpsqrt=sqrt (POW (ri[n-1],2)-1)-10;
for (k =n-2; k >=0; k--) {
if (tmpsqrt >= 0) {
printf ("%d\n", sum);
Break
}
else {
Tmpsqrt + = sqrt (Pow (ri[k],2)-1);
++sum;
}
}
}
return 0;
}
void QuickSort (double arr[], int left, int. right) {
int i=left;
int j=right;
Double pivot = arr[(left + right)/2];
Double tmp;
while (I <= j) {
while (Arr[i] < pivot) {
i++;
}
while (Arr[j] > Pivot) {
j--;
}
if (i<=j) {
Tmp=arr[i];
ARR[I]=ARR[J];
arr[j]=tmp;
i++;
j--;
}
}
if (Left < J) QuickSort (arr, left, J);
if (I < right) QuickSort (arr, I, right);
}
v0.1 C
#include <stdio.h>
#include <math.h>
#define SPRAYNUM 600
void QuickSort (double arr[], int left, int. right);
int main (void)
{
int m;
int n;
int k;
Int J;
Double ri[spraynum]={0};
scanf ("%d", &m);
GetChar ();
for (j = 0; j < m; ++j) {
scanf ("%d", &n);
GetChar ();
for (k = 0; k < n; ++k) {
scanf ("%lf", &ri[k]);
}
/*for (k = 0; k < n; ++k) {
printf ("%.2lf", Ri[k]);
}*/
printf ("\ n");
QuickSort (ri,0,n-1);
int sum=1;
Double tmpsqrt=sqrt (POW (ri[n-1],2)-1)-10;
printf ("line:%d,tmpsqrt:%lf\n", __line__, TMPSQRT);
for (k =n-2; k >=0; k--) {
if (tmpsqrt >= 0) {
printf ("tmpsqrt:%lf\n", tmpsqrt);
printf ("%d\n", sum);
Break
}
else {
Tmpsqrt + = sqrt (Pow (ri[k],2)-1);
++sum;
printf ("%d\n", sum);
}
}
}
return 0;
}
void QuickSort (double arr[], int left, int. right) {
int i=left;
int j=right;
Double pivot = arr[(left + right)/2];
Double tmp;
while (I <= j) {
while (Arr[i] < pivot) {
i++;
}
while (Arr[j] > Pivot) {
j--;
}
if (i<=j) {
Tmp=arr[i];
ARR[I]=ARR[J];
arr[j]=tmp;
i++;
j--;
}
}
if (Left < J) QuickSort (arr, left, J);
if (I < right) QuickSort (arr, I, right);
}