求1+11+111+1111+...+n个1的和中有多少个1?

题目:求1+11+111+1111+...+n个1的和中有多少个1?

解答思路:从个位往最高位计算,比如一直加到2014个1,那么个位一共有2014个1相加,先判断相加之后的和最低位(个位是否为1),相加之后的进位为201,其中2,0,1分别对应千位,百位和十位的进位;接下来求十位的和,十位为2013个1加上上一次的进位1,算出本次的进位(相对于十位的计算结果来说,个位的计算结果中只有20才是进位值,其实也就是将201的个位的1在十位计算中使用掉,然后将201除以10就是相对于十位要往前的进位了),依次类推下去即可。

程序的代码如下:

#include <stdio.h>

void sum1_compute(int n)
{
	int sum;
	int carry_num = 0, count = 0;

	while(n > 0) {
		sum = n + carry_num%10;
		if(1 == sum%10)
			count ++;
		carry_num /= 10;
		carry_num += sum/10;
		n --;
	}
	printf("sum contains(1) %d.\n", count);
}

int main()
{
	int n;

	printf("Please input n:");
	scanf("%d", &n);
	sum1_compute(n);
}

程序在ubuntu上运行的结果为:

求1+11+111+1111+...+n个1的和中有多少个1?

时间: 2024-10-21 20:47:59

求1+11+111+1111+...+n个1的和中有多少个1?的相关文章

求sum=1+111+1111+........+1....111 .

1,思路 大数相加,若直接使用int,或者long都会超出长度,因此考虑使用String存储. 2,代码 public class LargeNumAdd { public static void main(String[] args) { String sum = "0"; for (int i = 1; i <= 2009; i++) { String temp = getStr(i); sum = getSum(sum, temp); } System.out.printl

计算1+11+111+1111+........

f(n)=f(n-1)+10^n; public static void main(String[] args) {        int n=2017;        long temp=1;        for(int i=1;i<n;i++){            temp+=func(i);        }        System.out.println(temp);    } private static long func(int i) {        // TODO A

对1,11,11,111...1的思考,求1,12,123,123...n

void main(){ int s=0; int a=0; for(int t=1;t<=n;t++)                                     //12+111等于给百位十位个位都+1,就可以求得123 { //思路类似上述,不断重复 a=a*10+1; s+=a; }} //若是要求1+12+123+123...n //只要弄一个新变量b,令b+=s即可 原文地址:https://www.cnblogs.com/P-juan/p/10014240.html

20.C#LINQ基础和简单使用(十一章11.1-11.2)

终于看到了第11章,之前虽然也有看过,但没有太仔细,在工作中也偶尔会使用,但不明白其中的原理,那现在就来讲讲LINQ,做一做书虫~~ 首先先了解下LINQ的三个要点: LINQ不能把非常复杂的查询表达式转换成一行代码 使用LINQ不意味着你从此不再需要使用SQL LINQ不可能魔法般地让你成为架构天才 序列是LINQ的基础,在你看到一个查询表达式的时候,应该要想到它所涉及的序列:一开始总是存在至少一个序列,且通常在中间过程会转换成其他序列,也可能和其他序列连接在一起. 1 class Car 2

《精通C#》委托与事件(11.1-11.2)

1.索引器方法结构大致为<modifier><return type> this [argument list],它可以在接口中定义: 在为接口声明索引器的时候,记住声明只是表示索引器的存在.你只需要提供恰当的访问函数即可,不必包括范围修饰符.以下代码把索引器声明为接口IImplementMe的一部分: interface IImplementMe {  string this[int index]  {  get;  set;  } 相应实现的类则必须为IimplementMe的

11.1-11.5 LAMP

11.4 MySQL安装(中) MySQL的几个常用安装包:rpm.源码.二进制免编译 先进入目录 /usr/local/src(以后把所有软件包都放在这个目录下面) cd /usr/local/src 下载MySQL 5.6安装包,一般都下载x64 [[email protected] src]# wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz 解压MySQL的安装包

4.12 11.1-11.5听课笔记

LAMP架构介绍 LAMP=linux+Apache(即httpd,提供web服务的软件)+mysql(存储数据(字符串)+PHP(脚本语言,用C开发,与shell类似,但比shell高级,常用于做网站)) 在实际安装到服务器时,apache必须和PHP在一台服务器,mysql可以单独运行在一台服务器上 Apache无法直接与mysql交互,它需要一个PHP模块来提供帮助 动态请求:用户登录认证,用户发送用户名密码给apache,apache通过PHP从mysql中查询相应的用户名密码并进行比对

7.27 11.1-11.5

11.1 LAMP架构介绍 LAMP即Linux+Apache(即httpd)+MySQL+PHP Apache:提供web服务的软件 MySQL:用于存储字符串的数据库软件,无法存储图片.声音等文件,主要用于存储文字性内容(帖子.消息.用户名密码信息.账户积分信息等) PHP: 一个脚本语言,类似shell,但比shell复杂,使用C语言开发,主要用于做网站,用PHP写的网站多用于PC端访问: 移动app也需要调用服务端的接口,在服务端取数据,假如数据存在mysql,mysql会和PHP通信,

11.1-11.10

图像识别.一.搭建环境基于python的TensorFlow实现1.anaconda的安装参考:https://jingyan.baidu.com/article/f0062228503d2afbd3f0c8fe.html2.可视化工具:jupyter notebook文学编程 有利于数据分析 参考:https://www.jianshu.com/p/97fa4ed3edbc 打开方式:安装完anacoda之后在cmd中输入 jupyter notebook 在浏览器弹出的界面中点击new即可开