Manchester


私信TA

用户名:wenyajie

访问量:314243

签 名:

在历史前进的逻辑中前进,这个逻辑就是人心向背的逻辑

等  级
排  名 1
经  验 62934
参赛次数 1
文章发表 188
年  龄 0
在职情况 学生
学  校 Xiamen University
专  业 计算机科学

  自我简介:

在历史前进的逻辑中前进,这个逻辑就是人心向背的逻辑

解题思路:
首先,定义整数N;写出N从1到6的每一个数的尼科彻斯等式,观察规律;如下:

N

1^3=1                1=1^2+(1-1)

2^3=3+5                5=2^2+(2-1)                    3=1+2    

3^3=7+9+11              11=3^2+(3-1)                 7=5+2  

4^3=13+15+17+19          19=4^2+(4-1)              13=11+2   

5^3=21+23+25+27+29          29=5^2+(5-1)              21=19+2         

6^3=31+33+35+37+39+41         41=6^2+(6-1)              31=29+2          

……………………………………

N^3=                                                                = (N)^2+(N-1)                      = (N-1)^2+((N-1)-1)+2                                                          

根据上面规律归纳总结得到:

(1)N等于N个连续奇数的和;

(2)N的尼科彻斯等式中,第一个奇数,等于N-1的尼彻尼科彻斯等式中,最后一个奇数+2;

(3)N-1的尼科彻斯等式中,最后一个奇数等于(N-1)^2+( (N-1)-1);


编程思路就是:

  1. 输入一个整数N;

  2. 求出它的尼科彻斯公式中第一个奇数

  3. 循环输出N-1个奇数和加号(在第一个基础上加上2)

  4. 输出最后一个奇数,不带加号;


注意事项:
输出“1*1*1=1=”这部分时,如:printf("%d*%d*%d=%.0lf=",N,N,N,pow(N,3));
pow返回值不是int型,故不可以用%d,并且题目输出没有小数;

题目说让验证,不止一组测试值,以文件结束符结束;

运行图:

2017-12-12 21-42-50屏幕截图.png

参考代码:

#include<stdio.h>
#include<math.h>

int main()
{
int N;

while(scanf("%d",&N)!=EOF)
{
  int each_oddnum=pow(N-1,2)+(N-1-1)+2;

  printf("%d*%d*%d=%.0lf=",N,N,N,pow(N,3));

  for(int i=1;i<N;i++)
  {
    printf("%d+",each_oddnum);
    each_oddnum+=2;
  }
  printf("%d\n",each_oddnum);
}
return 0;
}


 

0.0分

32 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区

#include <stdio.h>
#include<string.h>
int main()
{
	int a[50];
	int m,n;
	scanf("%d", &m);
	n = m * m * m;
	printf("%d*%d*%d=%d=", m, m, m, n);
	for (int i = m*m-m+1; i <= m*m+m-1; i +=2)
	{
		printf("%d", i);
		if (i+1<=m*m+m-1)
		{
			printf("+");
		}
	}
}
我觉得我的挺简单的
2019-09-11 11:21:09
麻烦哪位帮忙看看问题出在哪?谢谢!

#include<stdio.h>

int main()
{
    int m,a;
    scanf("%d",&m);
    a=m*(m-1)/2;
    printf("%d*%d*%d=%d",m,m,m,2*a+1);
    for(int i=1;i<m;i++)
        printf("+%d",2*(a+i)+1);
    
    
    return 0;
}
2018-10-30 08:55:24
优秀
2018-09-24 21:22:32
我的方法在我的电脑可以运行在你这里就不能运行了。
2018-07-02 17:26:41
膜拜大神
2018-02-27 20:04:33