3 条题解

  • 1
    @ 2025-12-5 0:29:54
    #include <stdio.h>
    #include <math.h>
    #include <algorithm>
    #include <iostream>
    using namespace std;
    int main(){
        int m;
        scanf("%d",&m);
        while(m--){
            int n,i=0;
            scanf("%d",&n);
            double r[605];
            while(n--){
                scanf("%lf",&r[i]);
                i++;
            }
            sort(r,r+i);
            double len=0.0,cnt=0;
            while(len<20){
                len+=2*sqrt(r[i-1]*r[i-1]-1);
                i--;cnt++;
            }
            printf("%0.f\n",cnt);
        }
    }
    
    • 1
      @ 2023-9-24 14:11:39
      #include<stdio.h>
      #include<math.h>
      
      
      int main(void)
      {
      	int n,m;
      	scanf("%d", &n);
      	//循环次数
      	for (int i = 0; i < n; i++)
      	{
      		//半径个数
      		scanf("%d", &m);
      		double a[601] = { 0 };
      		for (int j = 0; j < m; j++)
      		{
      			scanf("%lf", &a[j]);
      		}
      		//排序
      		for (int k = 0; k < m - 1; k++)
      		{
      			for (int j = 0; j < m - 1 - k; j++)
      			{
      				if (a[j] < a[j + 1])
      				{
      					double t = a[j];
      					a[j] = a[j + 1];
      					a[j + 1] = t;
      				}
      			}
      		}
      		//判断输出
      		double sum = 0;
      		int j = 0;
      		while (sum < 20)
      		{
      			sum = sum + 2 * sqrt(a[j] * a[j] - 1);
      			j++;
      		}
      		printf("%d\n",j);
      	}
      	return 0;
      }//第一种题解
      
      • 1
        @ 2023-9-23 16:45:02
        #include<math.h>
        
        int main()
        {
        
            long long m; 
            int n,count,min;
            double sum,r[750],temp; 
            scanf("%lld",&m);
            while(m--)
            {
                scanf("%d",&n);
                for(int i=0;i<n;i++) 
                {
                    scanf("%lf",&r[i]);
        
                }
        
                count=0;sum=0;
                for(int i=0;i<n-1;i++)
                {
                    min=i;
                    for(int j=i+1;j<n;j++)
                    {
                        if(r[min]<r[j])
                            min=j;
                    }
                    if(min!=i)
                    {
        
                        temp=r[i];
                        r[i]=r[min];
                        r[min]=temp;
                    }
                }
                for(int i=0;i<n;i++)
                {
                    if(sum>=20)   
                    {
                        printf("%d\n",count); 
                        break;
                    }
                    else
                    {
                        sum+=sqrt(r[i]*r[i]-1)*2; 
                        count++; 
                    }
                }
        
            }
            return 0;
        }
        
        //第二种题解
        
        
        • 1

        信息

        ID
        121
        时间
        3000ms
        内存
        128MiB
        难度
        7
        标签
        (无)
        递交数
        1299
        已通过
        349
        上传者