【算法笔记】求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。

1.题目描述

求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)、位运算、递归、公式、sizeof。
习题链接:题目链接

2.题目分析

该题把我们的所有能用的方法都给限制死了,我们只能用一些的特殊的方法来做。不知道大家在思考的过程中考没考虑过C++中友元的特性和static修饰的变量的使用。

3.解题思路

我们可以定义一个类Sum,在类中定义两个静态的成员变量_i和_ret,其中_i表示n值的更新,_ret来统计累加和。通过实例化n个对象最后就可以达到_ret=1+2+3+…+n的效果。

4.代码实现

//方法一,利用友元
class Sum{friend class Solution; //这里使Solution类成为了Sum的友元,既Solution可以调用Sum中的变量。//如果不使用友元类,就需要提供一种静态的方法来获取_ret的值。
public: Sum(){_ret+=_i;++_i;}
private:static int _i;static int _ret;
};
int Sum::_i=1;
int Sum::_ret=0;
class Solution {
public:int Sum_Solution(int n) {Sum a[n];return Sum::_ret;}
};
//方法二、利用内部类 内部类有一特性即内部类就是外部类的友元
class Solution {
private:class Sum{public:Sum(){_ret+=_i;++_i;}};
private:static int _i;static int _ret;
public:int Sum_Solution(int n) {Sum a[n];return _ret;}
};
int Solution::_i=1;
int Solution::_ret=0;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/145161.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Docker的学习记录

Docker是一个被广泛使用的开源容器引擎,基于Go语言,遵从Apache2.0协议开源。 docker的三个概念:容器、镜像和仓库。 镜像(Image):镜像是Docker中的一个模板。通过 Docker镜像 来创建 Docker容器&#xff…

(一)TinyWebServer的环境配置与运行

Linux下C轻量级Web服务器,项目来源于:TinyWebServer 配置环境(为下载代码,编译运行做准备) 1. 安装VMware VMware官网 选择产品,点击Workstation Pro 下载试用版(注:需要在官网注册…

泡泡玛特城市乐园即将开园 解锁“文化+科技”潮流空间

近年来,泡泡玛特以潮玩IP为核心,不断拓展业务版图,推进国际化布局同时实现集团化运营,而泡泡玛特首个城市乐园即将开业。 据了解,泡泡玛特城市乐园是由泡泡玛特精心打造的沉浸式IP主题乐园,占地约4万平方米…

7.2 怎样定义函数

7.2.1 为什么要定义函数 主要内容: 为什么要定义函数 C语言要求所有在程序中用到的函数必须“先定义,后使用”。这是因为在调用一个函数之前,编译系统需要知道这个函数的名字、返回值类型、功能以及参数的个数与类型。如果没有事先定义&…

第三章 图标辅助元素的定制

第三章 图标辅助元素的定制 1.认识图表常用的辅助元素 ​ 图表的辅助元素是指除了根据数据绘制的图形之外的元素,常用的辅助元素包括坐标轴、标题、图例、网格、参考线、参考区域、注释文本和表格,它们都可以对图形进行补充说明。 ​ 上图中图表常用辅…

上网Tips: Linux截取动态效果图工具_byzanz

链接1 链接2 安装: sudo apt-get install byzanz 查看指令 说明 byzanz-record --help日常操作 xwininfo点击 待录制窗口 左上角 byzanz-record -x 72 -y 64 -w 1848 -h 893 -d 10 --delay5 -c /home/xixi/myGIF/test.gif小工具 获取鼠标坐标 xdotool getm…

图像练习-答题卡opencv(02)

原图 结果 代码 // Load source imagecv::Mat src cv::imread("answer_card.jpg", cv::IMREAD_COLOR);if (src.empty()){return;}cv::Mat gray;cv::cvtColor(src, gray, cv::COLOR_BGR2GRAY);cv::Mat binary;double value cv::threshold(gray, binary, 0, 255, …

Python3操作SQLite3创建表主键自增长|CRUD基本操作

Win11查看安装的Python路径及安装的库 Python PEP8 代码规范常见问题及解决方案 Python3操作MySQL8.XX创建表|CRUD基本操作 Python3操作SQLite3创建表主键自增长|CRUD基本操作 anaconda3最新版安装|使用详情|Error: Please select a valid Python interpreter Python函数绘…

软件测试之单元测试自动化入门基础

单元测试自动化 所谓的单元测试(Unit Test)是根据特定的输入数据,针对程序代码中的最小实体单元的输入输出的正确性进行验证测试的过程。所谓的最小实体单元就是组织项目代码的最基本代码结构:函数,类,模块等。在Python中比较知名…

【数据库——MySQL】(8)表数据插入、修改和删除练习及讲解

目录 1. 题目2. 解答 1. 题目 建立的数据库 YGGL,向库中的 3 个表中插入多行数据记录,然后修改和删除一些记录。 根据下表的样本数据,使用 SQL 语句向 Departments 表中插入数据。 使用 SQL 语句向 Employees 表中插入前 6 条数据。 使用…

C++ 并发编程实战 第七章 设计无锁数据结构

目录 7.1 定义和推论 7.1.1 非阻塞型数据结构 7.1.2 无锁数据结构 7.1.3 无需等待的数据结构 7.1.4 无锁数据结构的优点和缺点 7.2 无锁数据结构范例 7.2.1 实现线程安全的无锁栈 7.2.2 制止麻烦的内存泄漏:在无锁数据结构中管理内存 7.2.3 运用风险指针检…

【知识点】JavaScript中require的一些理解

以下内容源自个人理解,若有错误欢迎指出。 猜想 多个文件中require同一个文件时,对于首次出现的require,会去读取文件并执行一遍,然后加入缓存;之后当再次require到这个文件时,只会指向这个缓存&#xff0c…

【超分:光谱响应函数】

Spectral Response Function-Guided Deep Optimization-Driven Network for Spectral Super-Resolution (光谱响应函数引导的深度优化驱动网络光谱超分辨) 高光谱图像(HSI)是许多研究工作的关键。光谱超分辨率(SSR&a…

macOS 下 Termius 中文显示为乱码

👨🏻‍💻 热爱摄影的程序员 👨🏻‍🎨 喜欢编码的设计师 🧕🏻 擅长设计的剪辑师 🧑🏻‍🏫 一位高冷无情的编码爱好者 大家好,我是 DevO…

【图论C++】Floyd算法(多源最短路径长 及 完整路径)

>>>竞赛算法 /*** file * author jUicE_g2R(qq:3406291309)————彬(bin-必应)* 一个某双流一大学通信与信息专业大二在读 * * brief 一直在算法竞赛学习的路上* * copyright 2023.9* COPYRIGHT 原创技术笔记&#xff…

基于微信小程序的物流快递信息查询平台同城急送小程序(亮点:寄件、发票申请、在线聊天)

文章目录 前言系统主要功能:具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计…

CCF CSP认证 历年题目自练Day13

CCF CSP认证 历年题目自练Day13 题目一 试题编号: 201612-1 试题名称: 中间数 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述   在一个整数序列a1, a2, …, an中,如果存在某个数,大…

LabVIEW开发实时自动化多物镜云计算全玻片成像装置

LabVIEW开发实时自动化多物镜云计算全玻片成像装置 数字病理学领域正在迅速发展,这主要是由于计算机处理能力、数据传输速度、软件创新和云存储解决方案方面的技术进步。因此,病理科室不仅将数字成像用于图像存档等简单任务,还用于远程病理学…

源码编译安装zstd

目录 1 下载源码https://github.com/facebook/zstd 2 解压 3 在解压后的目录里输入make 4 sudo make install 安装完毕 5 输入whereis zstd 检查安装结果 1 下载源码https://github.com/facebook/zstd 2 解压 3 在解压后的目录里输入make 4 sudo make install 安装完毕…

java遇到的问题

java遇到的问题 Tomcat与JDK版本问题 当使用Tomcat10的版本用于springmvc借用浏览器调试时,使用JDK8浏览器会报异常。 需要JDK17(可以配置多个JDK环境,切换使用)才可以使用,配置为JAVA_HOME路径,否则&a…