文章目录

  • 题目分析
  • 题目链接

题目分析


来源:PAT网站

分析:

以数字abcdefg这个7位数字为例,说一下本题的思路。

1)数字1在每一位出现的次数。
2)以第d位为例,第d位的取值可以分为3种情况,d=0 、d=1和d>1。 在这些情况下,_ _ _ 1 _ _ _ 这样的数总共有多少个呢?比如d=0时,如下图情况1,为了不超过abc0efg这个数,并且满足_ _ _ 1 _ _ _ ,那么前三位就不能是abc,而只能取000~abc-1,后三位可以取000 ~ 999随便取。
用变量leftright来记录d左边的数和右边的数等于多少,然后用变量power来表示这1位的权值,比如下面power =1000.

AC代码

#include<bits/stdc++.h>
using namespace std;
const int N = 1e9;
int n;int calc(int n){vector<int> nums;//把n放到nums中,低位在前while(n) nums.push_back(n%10), n/=10;int res = 0;//从最高位开始枚举for(int i =nums.size()-1 ;i >=0 ;i--){int d = nums[i]; // 第d位//第d位左边的数left,第d位右边的数right,power 表示权值int left = 0 ,right = 0, power =1;//计算左边的值,高位for(int j =nums.size()-1; j > i; j--) left = left * 10 + nums[j];//计算右边的值,低位for( int j = i -1; j >= 0; j--){right = right * 10 + nums[j];power *= 10;  //权值}//如果d ==0if( d ==0)  res += left * power;//如果 d ==1 else if (d == 1) res += left * power + right +1;//如果  d >1 else  res += (left + 1) * power;}return res;  }
int main (){cin >> n;cout<<calc(n)<<endl;}

题目链接

PAT甲级1049 Counting Ones (30 分)

https://www.acwing.com/problem/content/1535/

PAT甲级1049 Counting Ones (30 分):[C++题解]统计1的个数、数位统计相关推荐

  1. PAT甲级1004 Counting Leaves (30分):[C++题解]树、邻接表存储树、dfs遍历树

    文章目录 题目分析 题目链接 题目分析 题意重述:一棵树,求每一层的叶子节点数目. 分析 构造树,使用邻接表来存(相当于存储有向图). 需要一个头结点数组h[N],然后每个头节点往外形成一个单链表e[ ...

  2. PAT甲级1072 Gas Station (30 分):[C++题解]dijkstra算法、最短路

    文章目录 题目分析 题目来源 题目分析 来源:acwing 分析: 所有的dist[ ]都≤Ds:最小的dist[ ]最大; dist[ ] 总和最大. 由于加油站是字符,为了简单起见,将m个加油站编 ...

  3. PAT甲级1155 Heap Paths (30 分):[C++题解]堆、堆的遍历、树的遍历、dfs输出路径、完全二叉树建树

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 堆首先是完全二叉树,所以先建完全二叉树,由于给定的是层序遍历的数据,所以直接用数组即可,注意数组下标从1开始,这样便满足结点u和左儿 ...

  4. PAT甲级1107 Social Clusters (30 分):[C++题解]并查集,爱好、人数

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 凭爱好,分人群.注意点:爱好可传递.什么意思?意思是A和B的有共同爱好1, B和C有共同爱好2,那么认为A和C也是同一群人. 按照爱 ...

  5. PAT甲级1103 Integer Factorization (30 分):[C++题解]背包问题,DP解法

    文章目录 题目分析 题目链接 题目分析 分析 把N(样例中N=169)看成背包的体积:把k(样例中k=5)看成背包能承的重量.把这道题转化为二维完全背包问题.由于数据范围给出的次幂P∈[2,7],那么 ...

  6. PAT甲级1139 First Contact (30 分):[C++题解] 图论、暴力枚举两个点、hash映射

    文章目录 题目分析 题目链接 题目分析 来源:acwing 题目分析: 图论模拟题. 给定暗恋的两个人A 和B,需要寻找一对C 和D ,满足:A和C是朋友,C和D是朋友,D和B是朋友.而且A.C同性别 ...

  7. PAT甲级1131 Subway Map (30分):[C++题解]堆优化dijkstra、单源最短路、地铁地图、巧妙地建图套dijkstra模板!!

    文章目录 题目分析 题目链接 题目分析 原题: 来源:acwing 分析: 建图:所有能走到的点之间建立一条边,比如下面一条地铁线路有4站,它们是相通的,两两之间建一条边,边权是经过的站点数. 下面考 ...

  8. PAT甲级1111 Online Map (30分):[C++题解]两次dijkstra求单源最短路、保存路径、长度最短、时间最短

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析:dijkstra求单源最短路的题目. 只是写两遍而已,第一遍求按照路径长度求,第二遍按照时间最少求. 另外加一个vector路径的判断 ...

  9. PAT甲级1030 Travel Plan (30分):[C++题解]dijkstra求单源最短路、保存路径

    文章目录 题目分析 题目链接 题目分析 来源:PAT网站 分析 dijkstra模板默写过来,然后多了一个保存路径,使用数组pre[N]记录最短路上每个点的前驱,通过pre数组保存到vector中 v ...

最新文章

  1. m-orchastration system
  2. matlab 图像中用text文字标注
  3. 缓存区溢出检测工具BED
  4. 软件测试用python一般用来做什么-想要成为一个优秀的软件测试人员,应该学些什么?...
  5. python编码规范手册-PEP8 Python 编码规范整理
  6. Treap原理和实现方法
  7. OpenCV访问像素点的灰度值
  8. 新手攻略熔炉_我的世界攻略:生存模式新手攻略
  9. 物流配送系统设计java,ZigBee物流配送系统设计
  10. Windows8之hyper-v探索
  11. mac下electron始终安装不成功解决办法
  12. Matlab图像处理—锐化滤波器
  13. Visio2013激活/破解
  14. steamvr自定义按键_SteamVR SDK更新:带来运动平滑、自定义控制器键等多项功能
  15. linux删除svn版本库
  16. android开发面试问题,这个回答让我错失offer!好文推荐
  17. 看动画理解「链表」实现LRU缓存淘汰算法
  18. PC微信逆向--在线备份数据库
  19. 码云与与GitHUB的对比及使用码云使用细节
  20. w10不能访问网络计算机,win10系统无法访问局域网电脑的具体教程

热门文章

  1. css 样式使用方法的累积
  2. Win8离线添加Net Framework 3.5功能
  3. varchar和Nvarchar区别 ----转载
  4. .Net Discovery系列之十一-深入理解平台机制与性能影响 (中)
  5. mysql远程连接数据库的二种方法_mysql 远程连接数据库的二种方法
  6. 用神经网络的衰变假设理解神经网络的翻译行为
  7. ps怎么把一个颜色替换成另一个颜色_常用的60个PS技巧,助你成为PS大神!
  8. 【控制】《多智能体系统的协同群集运动控制》陈杰老师-目录
  9. 1.13 总结-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授
  10. STM32 进阶教程 11 - RAM中运行程序