解法一(暴力获取):

#include<stdio.h>
#include<stdlib.h> int main(void)
{
int n;
int times = ;
int num = ; printf("输入整数n: ");
scanf("%d", &n); for(int i = ; i <= n; i++)
{
for(int temp = i; temp > ; temp = temp / )
{
if(temp % == || temp % == || temp % == || temp % == )
{
times++;
num += i;
break;
}
}
} printf("%d\n", times);
printf("%d\n", num); printf("\n");
system("pause");
}

解法二:

解题计算思路

实现代码:

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h> int get_level(int n) // 获取该整数的级别, <10, <100, ....
{
int n_level = ; while(n)
{
n_level++;
n /= ;
} return n_level;
} int get_sum(int level) // 获取 1+ 2+ 3 + 4 + ... 的值
{
int sum = ;
for(int i = ; i < pow(10.0, level - ); i++)
{
sum += i;
}
return sum;
} int main(void)
{
long long **info;
// info[i][j]
// j 代表相应位数的信息, 例如 j = 1代表个位数级, j = 2代表十位数级
// i = 0 存放着总数量和总和
// i = 1 代表对应位数中符合条件的数字的数量
// i = 2 代表对应位数中符合条件的数字的和
int n;
int n_level;
int special_number[] = {, , , }; // 存放那些特殊的值
//获取 1+ 2+ 3 + 4 + ... + 9 的值
int sum; // 存储 1+ 2+ 3 + 4 + ... 的总和值 printf("输入整数n: ");
scanf("%d", &n); n_level = get_level(n); // 建立相应的二维数组
info = (long long **)malloc( * sizeof(long long *));
for(int i = ; i <= ; i++)
{
info[i] = (long long *)malloc((n_level + ) * sizeof(long long));
// 初始化其值为 0
memset(info[i], , (n_level + ) * sizeof(long long));
} // 数值累计
for(int temp_level = ; temp_level <= n_level; temp_level++)
{
sum = get_sum(temp_level);
if(temp_level == )
{
for(int i = ; special_number[i] <= n && i < ; i++)
{//依次加 0, 1, 2, 9
info[][temp_level]++;
info[][temp_level] += special_number[i];
}
}
else{
for(int i = ; i * pow(10.0, temp_level - ) <= n && i < ; i++)
{
if(((i + ) * pow(10.0, temp_level - ) < n) && (i == || i == || i == ))
{// 符合条件时,将该位所有数值都加起来
// 将数值拆开 先计算最高位数上的值的和,再计算除了最高位数上其他的数值和
info[][temp_level] += pow(10.0, temp_level - );
info[][temp_level] += sum + i * pow(10.0, temp_level - ) * pow(10.0, temp_level - );
}
else if((i + ) * pow(10.0, temp_level - ) < n)
{
if(temp_level == )
{
info[][temp_level] += info[][temp_level - ];
info[][temp_level] += info[][temp_level - ] + i * pow(10.0, temp_level - ) * info[][temp_level - ];
}
else
{
info[][temp_level] += info[][temp_level - ] + pow(10.0, temp_level - );
info[][temp_level] += info[][temp_level - ] + i * pow(10.0, temp_level - ) * (info[][temp_level - ] + pow(10.0, temp_level - )) + get_sum(temp_level - );
}
}
else
{// 逐个加
for(int temp_n = i * pow(10.0, temp_level - ); temp_n <= n && temp_n < (i + ) * pow(10.0, temp_level - ); temp_n++)
{
for(int temp = temp_n; temp > ; temp = temp / )
{
if(temp % == || temp % == || temp % == || temp % == )
{
info[][temp_level]++;
info[][temp_level] += temp_n;
break;
}
}
}
}
}
}
} // 将所有总和加起来
for(int temp_level = n_level; temp_level > ; temp_level--)
{
info[][] += info[][temp_level];
info[][] += info[][temp_level];
} // 输出总和结果
printf("%d\n", info[][] - );
printf("%d\n", info[][]); printf("\n");
system("pause");
}

第十届蓝桥杯大赛-特别数的和-C++的更多相关文章

  1. 2019 第十届蓝桥杯大赛软件类省赛 Java A组 题解

    2019 第十届蓝桥杯大赛软件类省赛 Java A组 试题A 题解 ​ 题目最后一句贴心的提示选手应该使用 long (C/C++ 应该使用 long long). ​ 本题思路很直白,两重循环.外层 ...

  2. 第十届蓝桥杯大赛软件类省赛C/C++研究生组 试题I:灵能传输

    在游戏<星际争霸 II>中,高阶圣堂武士作为星灵的重要 AOE 单位,在游戏的中后期发挥着重要的作用,其技能"灵能风暴"可以消耗大量的灵能对一片区域内的敌军造成毁灭性的 ...

  3. 第十届蓝桥杯2019年C/C++ 大学B组省赛试题

    2019年第十届蓝桥杯大赛软件类省赛C/C++大学B组 试题 A:组队 本题总分:5分 [问题描述] 作为篮球队教练,你需要从以下名单中选出 1号位至 5号位各一名球员, 组成球队的首发阵容. 每位球 ...

  4. 2019第十届蓝桥杯C++B组题解(赛后重写的,不确保答案正确性,仅供参考)

    先说一下这次的感受吧,我们考场比较乱,开始比赛了,还有的电脑有故障,(向这些人发出同情),第一次认真参加比赛,真正比赛的时候感觉没有那么正式,很乱,各种小问题,(例如博主就没找到题目在哪里,找到后又不 ...

  5. 2019年第十届蓝桥杯【C++省赛B组】

    试题 A: 组队 本题总分:5 分 作为篮球队教练,你需要从以下名单中选出 1 号位至 5 号位各一名球员,组成球队的首发阵容.每位球员担任 1 号位至 5 号位时的评分如下表所示.请你计算首发阵容 ...

  6. 第十届蓝桥杯JavaC组省赛真题

    试题 A: 求和 本题总分:5 分 [问题描述] 小明对数位中含有 2.0.1.9 的数字很感兴趣,在 1 到 40 中这样的数包 括 1.2.9.10 至 32.39 和 40,共 28 个,他们的 ...

  7. Java实现第十届蓝桥杯旋转

    试题 F: 旋转 时间限制: 1.0s 内存限制: 512.0MB 本题总分:15 分 [问题描述] 图片旋转是对图片最简单的处理方式之一,在本题中,你需要对图片顺时 针旋转 90 度. 我们用一个 ...

  8. Java实现第十届蓝桥杯JavaC组第十题(试题J)扫地机器人

    扫地机器人 时间限制: 1.0s 内存限制: 512.0MB 本题总分:25 分 [问题描述] 小明公司的办公区有一条长长的走廊,由 N 个方格区域组成,如下图所 示. 走廊内部署了 K 台扫地机器人 ...

  9. Java实现第十届蓝桥杯外卖店优先级

    试题 G: 外卖店优先级 时间限制: 1.0s 内存限制: 512.0MB 本题总分:20 分 [问题描述] "饱了么"外卖系统中维护着 N 家外卖店,编号 1 ∼ N.每家外卖店 ...

随机推荐

  1. [RN] React Navigation 使用中遇到的显示 问题 汇总

    React Navigation 使用中遇到的显示 问题 汇总 https://www.jianshu.com/p/8b1f18affc5d

  2. 第01组 Alpha冲刺(1/6)

    队名:007 组长博客: https://www.cnblogs.com/Linrrui/p/11845138.html 作业博客: https://edu.cnblogs.com/campus/fz ...

  3. arthas安装进docker

    教程参照https://alibaba.github.io/arthas/arthas-tutorials mkdir /opt/downloads -pmkdir /opt/arthas -p下载地 ...

  4. convmv 解决GBK 迁移到 UTF-8 ,中文 文件名乱码

    yum install convmv 命令: convmv -f GBK -t UTF-8 -r --nosmart --notest <目标目录> -f from -t to --nos ...

  5. Mini UI tree上万复杂节点加载缓慢处理设计

    最直接的方式是设置tree顶级不展开,可以解决一定效率. expandOnLoad Boolean/Number 加载后是否展开.比如:true展开所有节点:0展开第一级节点.以此类推. 1. 解决问 ...

  6. ASP.NET Core中的Startup

    原文:链接 Startup.cs的作用: 配置各服务和HTTP请求管道. Startup类: ASP.NET Core中使用按惯例Startup命名的类Startup.cs: (可选)包括Config ...

  7. java agent 详细介绍 -javaagent参数

    java agent 详细介绍 简介 java agent是java命令的一个参数.参数 javaagent 可以用于指定一个 jar 包,并且对该 java 包有2个要求: 这个 jar 包的MAN ...

  8. [原]使用global mapper 修改影像数据DOM的投影变换(将数据转换成osgearth支持的投影)

    osgearth默认使用的投影基准面为: Geographic(Latitude/Longitude)的 WGS84 有这样一份数据需要修改: 1.在菜单栏种选择“工具”---->“配置” 2. ...

  9. Java 文件句柄泄露问题解决小记(转)

    转:Java 文件句柄泄露问题解决小记 维护 WebIDE 免不了要管理很多的文件, 自从我们线上系统增加了资源回收功能,便一直受一个问题困扰:后台线程解绑目录时偶尔报错,看症状因为是某些文件被占用了 ...

  10. flask 运行 flask db init 报错,init-db 命令找不到

    flask init-db 结果是 `Error: No such command “init-db”. 那是因为init-db 已经被 flask db init 给代替了 运行 flask db ...