当前位置: 首页 > article >正文

C语言初阶牛客网刷题——HJ76 尼科彻斯定理【难度:简单】

1.题目描述——HJ76 尼科彻斯定理

HJ76 尼科彻斯定理
验证尼科彻斯定理,即:任何一个整数 m 的立方都可以写成 m 个连续奇数之和。例如:

1^3=1
2^3=3+5
3^3=7+9+11
4^3=13+15+17+19

输入一个正整数 m(m≤100) ,将 m 的立方写成 m 个连续奇数之和的形式输出。
注意:本题含有多组输入数据。
输入描述:输入一个int整数
输出描述:输出分解后的string

2. 思路

3^3 的起始奇数是 7 , 则 {7, 9, 11} 3个奇数求和表达式 7 + 9 + 11
观察每个起始奇数的个规则: m^3 的起始奇数值等于 m * (m - 1) + 1

奇数起始项规律:
首先所有奇数项构成一个差值为2的等差数列, 1 3 5 7 9 …
其次,1的起始奇数是第1个等差数列项,2的起始奇数是第2个等差数列项,3的起始奇数是第4个等差数列项…
形成规律: 1 2 4 7…,而他们的差值分别是1 2 3 4 5…,所以第n项就是一个从1开始到n-1的等差数列之和+1

因此当有了需求m的立方,首先计算他的第一个奇数项是总体的第几个 。
等差数列求和公式 Sn=n(a1+an)/2 m * (m - 1) / 2
等差数列第n项公式 an=a1+(n-1)d 1 + ((m * (m - 1) / 2) + 1 - 1) * 2
最终得到m的立方的表达式起始奇数: m * (m - 1) + 1

3.代码实现

#include <stdio.h>

int main() {
    int a;
    while (scanf("%d", &a) != EOF) { 
        
        int start = a * (a - 1) + 1;//找到对应m^3的起始奇数
        char buf[10240] = {0};
        sprintf(buf, "%d", start);//与printf用法类似,格式化字符串但是不用于打印而是放到一个buf中
        for (int i = 1; i <a ; i++) //先将起始奇数转换成为字符串存入buf中
        {//然后将紧随随后的m-1个奇数数字转换为字符串,按照指定格式放入buf中
//%s+%d, 要求先有一个字符串,然后是+符号,然后是个数字的格式,对应是buf原先的数据,和奇数
           sprintf(buf, "%s+%d", buf, start+=2);
        }
        printf("%s\n", buf);
    }
    return 0;
}

在这里插入图片描述


http://www.kler.cn/a/518059.html

相关文章:

  • 阿里前端开发规范
  • 机器学习周报-文献阅读
  • 壁纸设计过程中如何增加氛围感
  • 从规则到神经网络:机器翻译技术的演进与未来展望
  • WebForms 表单
  • C++异常处理
  • Class ‘ZipArchive‘ not found
  • 算法整理:2-opt求解旅行商(Python代码)
  • 算法中的移动窗帘——C++滑动窗口算法详解
  • docker:容器化虚拟化的原理
  • 安装MeloTTS报错解决方法
  • 08-ArcGIS For JavaScript-通过Mesh绘制几何体(Cylinder,Circle,Box,Pyramid)
  • 【C语言算法刷题】第10题
  • 用科技守护团圆时光,约克VRF中央空调新天氟地水/天氟热水让春节更美好!
  • 【贪心算法】洛谷P1090 合并果子 / [USACO06NOV] Fence Repair G
  • C++实现设计模式---桥接模式 (Bridge)
  • 「 机器人 」利用电压偏移实现扑翼飞行器的俯仰力矩控制
  • leetcode刷题记录(八十七)——215. 数组中的第K个最大元素
  • 前端(数据可视化低代码平台)AI
  • 常用集合-数据结构-MySql
  • openlava/LSF 用户组管理脚本
  • 22_解析XML配置文件_List列表
  • eniops库中pack函数使用方法
  • Python数据分析-pandas入门(五)
  • LosslessCut:一款强大的音视频无损剪辑工具
  • 【深度学习】常见模型-生成对抗网络(Generative Adversarial Network, GAN)