-
18 数字之和
2020-04-23 17:04:2218数字之和 作者:朱星垠时间限制:1S章节:循环 问题描述 : ...对每组测试数据,你的程序需要向标准输出文件(通常为启动该程序的文本终端)依次输出一组对应的答案:输出为它的各位数字之和,所...18 数字之和
作者: 朱星垠 时间限制: 1S章节: 循环
问题描述 :
输入一个正整数,求这个正整数的各位数字之和。
输入说明 :
你的程序需要从标准输入设备(通常为键盘)中读入多组测试数据。每组测试数据为正整数,每行一个N,N小于20000。
输出说明 :
对每组测试数据,你的程序需要向标准输出文件(通常为启动该程序的文本终端)依次输出一组对应的答案:输出为它的各位数字之和,所有数据前后没有多余的空行,两组数据之间也没有多余的空行。
输入范例 :
10
99输出范例 :
1
18#include <stdio.h> int main(){ int n,a[5]; while(scanf("%d",&n) !=EOF){ if(n<0||n>=20000) continue; for(int i=0;i<5;i++){ a[i]=n%10; n/=10; } int temp=0; for(int k=0;k<5;k++){ temp+=a[k]; } printf("%d\n",temp); } return 0; }
-
基础18 数字之和
2020-04-23 19:33:21输入一个正整数,求这个正整数的各位数字之和。 输入说明 : 你的程序需要从标准输入设备(通常为键盘)中读入多组测试数据。每组测试数据为正整数,每行一个N,N小于20000。 输出说明 : 对每组测试数据,你的程序...18 数字之和
作者: 朱星垠 时间限制: 1S章节: 循环
问题描述 :
输入一个正整数,求这个正整数的各位数字之和。
输入说明 :
你的程序需要从标准输入设备(通常为键盘)中读入多组测试数据。每组测试数据为正整数,每行一个N,N小于20000。
输出说明 :
对每组测试数据,你的程序需要向标准输出文件(通常为启动该程序的文本终端)依次输出一组对应的答案:输出为它的各位数字之和,所有数据前后没有多余的空行,两组数据之间也没有多余的空行。
输入范例 :
10
99
输出范例 :
1
18#include<stdio.h> int main(){ int N,m; while(scanf("%d",&N)!=EOF){ m=0; while(N!=0){ m=m+N%10; N=N/10; } printf("%d\n",m); } return 0; }
-
2021-01-17】输入一个整数 n,请计算并返回该整数「各位数字之积」与「各位数字之和」的差
2021-01-17 22:59:18各位数字之和:5+6+7=18 差:210-18=192 2 题目分析 2.1 题目梳理 拿到题目,我们要对题目进行分析,找到题目中所蕴含的关键信息 本题中的关键字:输入、整数n、各位数字、积、和、差 由此,我们要做的第一件事就是...1 题目重述
输入一个整数 n,请计算并返回该整数「各位数字之积」与「各位数字之和」的差
例如:
输入:567
返回:192
解释:- 各位数字之积:5×6×7=210
- 各位数字之和:5+6+7=18
- 差:210-18=192
2 题目分析
2.1 题目梳理
拿到题目,我们要对题目进行分析,找到题目中所蕴含的关键信息
本题中的关键字:输入、整数n、各位数字、积、和、差由此,我们要做的第一件事就是获取键盘上的输入,且输入必须为一个整数。其次,获取该整数的各位数字。进而求得各位数字之积和各位数字之和。最后,进行做差运算。
2.2 实现思路
1.键盘输入一个整数。
创建Scanner类的对象input,并传入参数System.in 代表系统输入流。使用Scanner类的nestInt()方法获取整型数字n。2.获取各位数字
思路1:
首先,我们从数学中 被除数➗除数=商+余数 这一点可以知道,当除数为10时,只会对数字进行小数点的前移而不改变每一位数字的值。
其次,通过整数对10取余,可以得到该整数的个位数字。通过整数除以10取商,可以该整数的大小,对整数进行降位操作(即将n位整数变为n-1位整数,且不改变该整数每一位数字)。反复多次,直到该整数等于0,这样就提取出了该整数的每一位数字。
这里要用到的语法:循环结构(这里采用的是while循环 )思路2:
我们知道整型是基本数据类型,没有调用方法,也无法直接获取每一位数字。但是字符串类型是引用数据类型,可以调用charAt()方法提取字符串中的每一个元素。基于此,我们思考是否可以将整型转换成字符串类型。幸运的是,String类型为我们提供了这样一个方法,采用String类的valueOf()方法可以将其他数据类型转换成字符串类型。于是我们采用String.valueOf()方法将整型转换成字符串类型,从而采用String类的charAt()方法提取出字符串中的每一个数字字符。
可是我们也知道字符虽然有对应的是ASCII码,但无法进行计算,也就无法实现我们的需要。于是我们还需要将每一个字符转换为整型,从而进行数字之间的计算。
这一过程被拆分为两个部分,第一部分是将字符转换成字符串类型,那么首先要将获取的字符转换为字符串,依旧采用String类的valueOf()方法可以将字符类型转换成字符串类型。第二部分是将字符串类型转换成整型,我们知道Integer是int的包装类型,可以调用方法,采用Integer类的parseInt()方法,可以将字符串类型转换为整型,从而实现字符型到整型的转换。3.进行做差运算
对我们得到的数字分别进行累加和累积,并将结果分别保存在sum和mul中。3 代码实现
3.1 方式一:
通过对10取余的方式获取每一位数字
// 1 获取一个整数n Scanner input = new Scanner(System.in);// System.in 代表系统输入流 System.out.println("请输入一个整数:"); int n = input.nextInt();//nextInt()方法限制输入必须为整型 System.out.println("输入数字为:" + n); // 2 获取该整数的每一位数字 // 2.1 默认和为0,积为1(积为0的话就没有办法累积了哦,毕竟0乘任何数都为0) int sum = 0, mul = 1; // 2.2 判断数字是否为0 while (n != 0) { // 2.3 获取整数的各位数字 int num = n % 10; // 2.4 累积 mul *= num; // 2.5 累加 sum += num; // 2.6 对整数进行降位(即改变当前数字的大小) n /= 10; } // 3 进行做差计算 int result = mul - sum; // 4 输出 System.out.println("运算结果为:" + result);
代码结果:
请输入一个整数: 567 输入数字为:567 运算结果为:192
3.2 方式二:
通过类型转换获取每一位数字
// 1 获取一个整数n Scanner input = new Scanner(System.in);// System.in 代表系统输入流 System.out.println("请输入一个整数:"); int n = input.nextInt(); System.out.println("输入数字为:" + n); // 2 获取该整数的每一位数字 // 2.1 默认和为0,积为1 int sum = 0, mul = 1; // 2.2 将数字转化为字符串,使用String类的.charAt()方法提取字符串中的每个元素 // 整型=>字符串 String strNumber = String.valueOf(n); for (int i = 0; i < strNumber.length(); i++) { char c = strNumber.charAt(i); // 2.3 将字符转化为字符串,再将字符串转化为整型,进行运算 // 字符=>字符串=>整型 // 分步实现 // String str = String.valueOf(c); // int num = Integer.parseInt(str); // 组合实现 int num = Integer.parseInt(String.valueOf(c)); // 2.4 累积 mul *= num; // 2.5 累加 sum += num; } // 3 进行做差计算 int result = mul - sum; // 4 输出 System.out.println("运算结果为:" + result);
代码结果:
请输入一个整数: 567 输入数字为:567 运算结果为:192
3.3 方式三:
如果你的程序中需要多次计算,可以将实现的代码写作方法,在主函数中调用即可。
public static void main(String[] args) { // 1.获取输入数字 Scanner input = new Scanner(System.in); System.out.println("请输入数字:"); int n = input.nextInt(); System.out.println("输入数字为:"+n); // 2.调用方法并输出 // 方法1: System.out.println("计算结果1:" + diff1(n)); // 方法2: System.out.println("计算结果2:" + diff2(n)); } // 方法1: public static int diff1(int n) { // 1.默认和等于0,积等于1 int sum = 0, result = 1; // 2.判断数字是否为0 while (n != 0) { // 3.获取当前数字的个位 int num = n % 10; // 4.进行计算 // 4.1累加 sum += num; // 4.2累乘 result *= num; // 5.改变当前数字的大小 n = n / 10; } return result - sum; } // 方法2: public static int diff2(int n) { // 1.默认和等于0,积等于1 int sum = 0, result = 1; // 2.将整型转化为字符串类型 String strNumber = String.valueOf(n); // 3.获取字符串的每个字符 for (int i = 0; i < strNumber.length(); i++) { char c = strNumber.charAt(i); // 4.类型转换 // 字符=>字符串=>整型 String s = String.valueOf(c); int num = Integer.parseInt(s); // 5.进行计算 sum += num; result *= num; } return result - sum; }
代码结果:
请输入数字: 567 输入数字为:567 计算结果1:192 计算结果2:192
-
【C语言】输入一个整数n,求它的位数以及各位数字之和。例如,123的位数是3,各位数字之和是6。
2020-12-28 19:55:42【问题描述】输入一个整数n,求它的位数以及各位数字之和。例如,123的位数是3,各位数字之和是6。 【输入输出样例1】 Input n:1280 count=4,sum=11 【输入输出样例2】 Input n:-99 count=2,sum=18 【样例说明】 ...【问题描述】输入一个整数n,求它的位数以及各位数字之和。例如,123的位数是3,各位数字之和是6。
【输入输出样例1】
Input n:1280
count=4,sum=11
【输入输出样例2】
Input n:-99
count=2,sum=18
【样例说明】
输入提示符后冒号为英文字符,后面无一个空格。
输出语句的“=”两边无空格。#include<stdio.h> int main() { int count=0, n,t,sum=0; printf("Input n:"); scanf_s("%d",&n); while (n != 0) { t = n % 10; n = n / 10; count++; sum += t; } printf("count=%d,sum=%d",count,sum); return 0; }
-
东北大学C语言期末考试题库-从键盘输入一个任意3~5位正整数,判断各位数字之和是否为18,是输出yes,否则...
2020-06-15 22:05:50东北大学C语言期末考试题库-从键盘输入一个任意3~5位正整数,判断各位数字之和是否为18,是输出yes,否则输出no。 题目 从键盘输入一个任意3~5位正整数,判断各位数字之和是否为18,是输出yes,否则输出no。 ... -
BZOJ 1799 self 同类分布(数位dp,区间各位数字和能整除原数的数字个数)
2016-08-31 00:16:22给出aa,bb,求出[a,b][a,b]中各位数字之和能整除原数的数的个数。 数据范围:a≤b≤1018a\leq b\leq 10^{18} 分析: 暴力枚举所有可能的数字和即可。 需要判断余数等于0并且所有数字和等于设定的sum。#include ... -
一个三位自然数正好等于它各数位上的数字和的18倍。这个三位自然数是几?
2014-01-25 14:52:06因而,它的各位数字之和就是9的倍数。 abc=18(a+b+c) 而a+b+c只有可能是9,18,27 9×18=162 yes 18×18=324 no 27×18=486 no package liulixin; public class threeDigits { /** * @param args */ ... -
洛谷 T156526 各数字之和(传智杯-练习赛)
2020-12-13 17:15:52T156526 各数字之和 题目描述 给出一个正整数 n,请你计算从 1 到 n 的所有正整数中,有多少个数字的各位数和是 9? 输入格式 输入一个不超过 10000001000000的正整数 n。 输出格式 输出一个整数表示答案 输入输出... -
求一个任意实数c的算术平方根g_03.数字类和算术运算符
2020-11-23 13:16:55微信公众号同名 整除问题是小学奥数的经典题型。 349956476571能被1~20里的哪些数整除,可以直接排除2、4、6、8、10、12、14、15、...整除性规律 2:个位是偶数 3:各位上数字之和是3的倍数 4:末两位上的数能被4整... -
Python编程之欧拉计划16~18
2019-05-05 23:57:25Python编程之欧拉计划(16~18)欧拉计划16、求100个大数的和的前10位数字17、...215=32768,32768的各位数字之和为 3 + 2 + 7 + 6 + 8 = 26。计算21000的各位数字之和。 分析:还是一行代码解决Orz print(sum(list(... -
2021-01-18查找并列出十进制表示法中所有四位数字
2021-01-18 20:51:47//计算和返回n转换成base进制后的各位数字之和 int Cale(int base,int n){ int sum=0; for(;n>0;) //n>0处理 sum+=n%base;//加各进制的各位数之和; n/=base; //用来转化进制 return sum; } //遍历... -
10以内逆向运算题_03.数字类和算术运算符
2021-01-15 23:44:01微信公众号同名 整除问题是小学奥数的经典题型。 349956476571能被1~20里的哪些数整除,可以直接排除2、4、6、8、10、12、14、15、...整除性规律 2:个位是偶数 3:各位上数字之和是3的倍数 4:末两位上的数能被4整... -
【xsy1143】 兔子的数字 搜索
2019-10-04 19:17:27题目大意:请找到第$k$大的数,满足各位数字之和等于各位数字之积。其中$k≤10^{18}$。 首先我们要确定这个第$k$大的数有多大 我们用$f[i][j][he][ji]$表示我们要搜索一个$i$位的数字,还有$j$位没有确定,且... -
python整除运算符四舍五入_03.大数整除问题,趣说python数字类和算术运算符
2020-12-11 10:53:22接上题,整除问题是小学奥数的经典题型。349956476571能被1~20里的哪些数整除,可以直接排除2...整除性规律2:个位是偶数3:各位上数字之和是3的倍数4:末两位上的数能被4整除5:个位是0或者56:个位是偶数,且各位... -
求7的整数倍和(大数算法)
2016-04-28 03:34:56求(1-10^18)内的整数,满足各位数字之和为7的整数倍的所有数的和,例如:25,86,106,1115各位相加都是7的整数倍。要求:1-2秒内完成 -
遇到一个比较棘手的算法,请各位大神帮忙解答一下
2014-04-22 08:10:031、假设有一个数组全部为正数,arr[7]={6,9,12,3,14,4,12}。...4、现有数组arr[1000]限制区间长度为10~18,如何依次分割出连续区间,使之在当前数组中的区间平均数最大。期待大神表现~~算法就是伤脑啊~~ -
pat乙级 1046 划拳答案部分正确,求各位前辈指点!
2020-06-10 10:56:40如果谁比划出的数字正好等于两人喊出的数字之和,谁就赢了,输家罚一杯酒。两人同赢或两人同输则继续下一轮,直到唯一的赢家出现。 下面给出甲、乙两人的划拳记录,请你统计他们最后分别喝了多少杯酒。 输入... -
shell脚本实例之Charpter8-8
2017-11-20 02:53:00要求:如果一个整数各位数字之和可以被9整除,那么该数就能被9整除。编写一个脚本,提示用户输入一 个整数,然后输出该整数,并告知能够被9整数。 这里只实现了四位数的判断: 1 2 3 4 5 6 7 8 9 10 11 12 13 14... -
BZOJ 1799 同类分布(数位DP)
2017-05-01 19:05:00给出a,b,求出[a,b]中各位数字之和能整除原数的数的个数。1<=a<=b<=1e18. 注意到各位数字之和最大是153.考虑枚举这个东西。那么需要统计的是[0,a-1]和[0,b]内各位数字之和为x且能整除x的数字个数。 那么... -
HYSBZ 1799 self 同类分布——数位dp
2018-05-21 18:04:44题意:给出a,b,求出[a,b]中各位数字之和能整除原数的数的个数。 思路:给出a,b,求出[a,b]中各位数字之和能整除原数的数的个数。1<=a<=b<=1e18. 注意到各位数字之和最大是153.考虑枚举这个... -
Smith数
2015-01-11 22:51:15/** 对于一个正整数n,如果它的各位之和等于它的... **3+1+2+5+7=18,它的所有质因数的各位数字之和为3+3+2+3+1+5+1=18,因此, **31257是一个Smith数。编写一个程序判断输入的正整数是不是Smith数。 */ #include # -
判断一个数是否为Simth数
2018-03-16 22:08:00例如,31257=3*3*23*151,31257 的各位数字之和为3+1+2+5+7=18,它的所有质因数的各位数字之和为3+3+2+3+1+5+1=18,因此,31257是一个Smith数。编写一个程序判断输入的正整数是不是Smith数。输入说明:有多组数据,... -
华为机试—Smith数
2015-01-11 01:28:54例如,31257=3*3*23*151,31257 的各位数字之和为3+1+2+5+7=18,它的所有质因数的各位数字之和为3+3+2+3+1+5+1=18,因此,31257是一个Smith数。编写一个程序判断输入的正整数是不是Smith数。 输入说明:有多组... -
smith 数
2015-04-05 21:16:18例如,31257=3*3*23*151,31257 的各位数字之和为3+1+2+5+7=18,它的所有质因数的各位数字之和为3+3+2+3+1+5+1=18,因此,31257是一个Smith数。编写一个程序判断输入的正整数是不是Smith数。 输入说明:有多组... -
luoguP4127——数位dp+枚举
2020-03-23 21:42:44题目大意: ...各位数字之和最大为9*18=162,因此我们可以枚举数字之和。 定义状态为dp[pos][sum1][sum2]表示枚举到pos位,前面数位的和sum1,以及前面数位的组成的数对mod取余的结果。 最后... -
zzuli OJ 2339:小新同学的学号
2018-12-25 15:32:13从任一个3的倍数的数开始进行如下变换:把各位数字的立方相加,其和就作为变换后的数字。反复进行上述变换,经过有限次计算以后,结果必然等于153。 例如:24是3的倍数,按照上述规则,进行变换的过程是: 24 -&... -
洛谷 P4127 [AHOI2009]同类分布 (数位dp)
2021-02-11 01:37:56题目描述 给出两个数a,ba,b,求...dp[i][j][k]:i表示数位,j表示到当前数位的各位数字之和,k表示原数。 由于原数很大,所以在计算原数的时候就对数字之和取模,那就要提前设置一个数字之和作为模数,所以枚举所有可能 -
java百元买百兔 穷举法_穷举法练习题
2021-01-12 15:08:272、有一个三位数,个位数字比百位数字大,而百位数字又比十位数字大,并且各位数字之和等于各位数字相乘之积,求此三位数。3、蜘蛛有8条腿,蜻蜓有6条腿和2对翅,蝉有6条腿和1对翅。三种虫子共18共,共有118条腿和20...
-
基于平均纹理变化的帧级分析检测视频帧率上转换
-
投标方法论
-
QWidget如何设置成模态窗体
-
MantleModal:适用于iOS应用程序的可拖动模式-源码
-
MySQL 高可用(DRBD + heartbeat)
-
js的throw有用法
-
FFmpeg4.3系列之16:WebRTC之小白入门与视频聊天的实战
-
工程制图 AutoCAD 2012 从二维到三维
-
深度解析:2021年中国高技术产业逆势成长 数字经济成经济增长点(杭州区块链产业白皮书发布)
-
vue3从0到1-超详细
-
3种布局管理器
-
145.二叉树后序遍历
-
python在各行各业的应用.pdf
-
5G 确定性网络产业白皮书.pdf
-
EditPic.zip
-
华为1+X——网络系统建设与运维(高级)
-
myMiniOs(no os).rar
-
机器学习个人笔记完整版v5.29-A4打印版.pdf
-
线程的生命周期
-
项目管理工具与方法