【题解】洛谷P2433 【深基1-2】小学数学 N 合一(c语言)

#include<stdio.h>
#include<math.h>
int main(){
//定义各种需要用到的变量
int T;
double a,b,c,r,C,S,V,r1,r2,V1,V2;
double pi=3.141593;
int d,e,f,m,n,M,i;
scanf("%d",&T);
switch(T){
case 1:
    printf("I love Luogu!");
    break;
case 2:
    printf("6 4");
    break;
case 3:
    printf("3\n12\n2");
    break;
case 4:
    //保留六位有效数字!!!
    printf("%.3lf",500.0/3.0);
    break;
case 5:
    printf("%d",480/32);
    break;
case 6:
    //保留六位有效数字!!!
    a=sqrt(6.0*6.0+9.0*9.0);
    printf("%.6g",a);
    break;
case 7:
	printf("110\n");
    printf("90\n");
    printf("0");
    break;
case 8:
    //保留六位有效数字!!!
    r=5.0;
	C=0.0;
	S=0.0;
	V=0.0;
    S=pi*r*r;
    C=2*pi*r;
    V=4.0/3.0*pi*r*r*r;
    printf("%.6g\n%.6g\n%.6g",C,S,V);
    break;
case 9:
    //外层循环,从0开始逐一加,符合条件输出
    //内层循环,减去每天要吃的桃子,当桃子数量为奇数时跳出,同时令d=0,保证循环继续运行。
    m=0;
    d=m;
    while(d<1){
	d=m;
	for(i=0;i<3;i++){
	if(d%2 !=0){
	d=0;
	break;}
	d=d-(d/2+1);
	}
    m++;
	}
    printf ("%d",m-1);
    break;
case 10:
    printf("9");
    break;
case 11:
    //保留六位有效数字!!!
    printf("%.6g",100/3.0);
    break;
case 12:
    printf("%d\n",1+'M'-'A');
    printf("%c",'A'+17);
    break;
case 13:
    r1=4.0;
	r2=10.0;
	V=0;
	V1=0;
	V2=0;
	a=0;
    d=0;
    V1=4.0/3.0*pi*r1*r1*r1;
    V2=4.0/3.0*pi*r2*r2*r2;
    V=V1+V2;
    while(a*a*a<=V){
    a++;
    }
    d=(int)a;
    printf("%d",d-1);
    break;
case 14:
    m=1;
	n=119;
	M=0;
    M=m*n;
    while(M<3500){
    m++;
    n--;
    M=m*n;
    }
    printf("%d",m);
    break;
}
return 0;
}

  • 11
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
洛谷p5736 【深基7.例2】质数筛是一个关于质数筛法的题目,要求我们根据输入的一个正整数n,找出小于等于n的所有质数。 质数是指只能被1和自身整除的大于1的整数,比如2、3、5、7等。质数筛法是一种常见且高效的找出质数的方法。 在这道题中,我们需要使用质数筛法来找出小于等于n的所有质数。首先,我们定义一个boolean类型的数组isPrime,用来标记每个数字是否是质数。初始时,我们将isPrime数组的所有元素都设置为true。 然后,我们从2开始遍历到n,对于每个数字i,如果isPrime[i]为true,说明这个数字是质数。那么我们就需要将i的倍数都标记为false,因为这些倍数一定不是质数。具体做法是,从2*i开始,每次增加i,将对应的isPrime数组的元素都置为false。 遍历结束后,isPrime数组中为true的元素即为小于等于n的所有质数。我们可以遍历isPrime数组,将为true的下标即为质数输出即可。 这个算法的时间复杂度是O(nloglogn),相较于直接遍历每个数字并判断是否是质数的方法,时间复杂度更低,效率更高。 对于这个题目的java实现,我们可以使用一个boolean数组isPrime来标记每个数字是否是质数,使用一个ArrayList来存储所有的质数,最后将ArrayList转化为数组输出。 代码示例如下: ``` import java.util.ArrayList; public class Main{ public static void main(String[] args){ int n = 100; // 输入的正整数n boolean[] isPrime = new boolean[n+1]; // 标记每个数字是否是质数的数组 ArrayList<Integer> primes = new ArrayList<>(); // 存储质数的ArrayList // 初始化isPrime数组 for(int i=2; i<=n; i++){ isPrime[i] = true; } // 质数筛法 for(int i=2; i<=n; i++){ if(isPrime[i]){ primes.add(i); for(int j=2*i; j<=n; j+=i){ isPrime[j] = false; } } } // 将ArrayList转化为数组输出 int[] result = new int[primes.size()]; for(int i=0; i<primes.size(); i++){ result[i] = primes.get(i); } // 输出结果 for(int i=0; i<result.length; i++){ System.out.print(result[i] + " "); } } } ``` 这样,我们就可以通过这段代码来实现洛谷p5736题目的要求,找出小于等于输入的正整数n的所有质数,并将它们按从小到大的顺序输出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值