1的数目
来源:互联网 发布:windows closewait 编辑:程序博客网 时间:2024/03/29 14:17
(1)法一
#include<iostream>using namespace std;typedef unsigned __int64 ULONGLONG;ULONGLONG Count1InAInteger(ULONGLONG n){ ULONGLONG iNum=0; while(n) { iNum+=(n%10==1)?1:0; n/=10; } return iNum; }ULONGLONG f(ULONGLONG n){ ULONGLONG iCount=0; for(ULONGLONG i=1;i<=n;i++)iCount+=Count1InAInteger(i); return iCount;}int main(){ ULONGLONG n=123; cout<<f(n)<<endl; return 0;}
(2)法二
给定一个正整数N,假设它的第i位为B,B的高位部分为A,B的低位部分为C,N=(A)B(C)=A*10^i+B*10^(i-1)+C。考虑第i位B:
1.B<1,从(0)1(0)到(A-1)1(10^i-1),都小于(A)B(C),总共有A*10^i个数;
2.B=1,从(0)1(0)到(A-1)1(10^i-1),从(A)1(0)到(A)1(C),都不大于(A)B(C),总共有A*10^i+C+1个数;
3.B>1,从(0)1(0)到(A)1(10^i-1),都小于(A)B(C),总共有(A+1)*10^i个数。
#include<iostream>using namespace std;typedef __int64 LONGLONG;typedef unsigned __int64 ULONGLONG;LONGLONG Sum1s(ULONGLONG n){ ULONGLONG iCount=0; ULONGLONG iFactor=1; ULONGLONG iLowerNum=0; ULONGLONG iCurrNum=0; ULONGLONG iHigherNum=0; while(n/iFactor) { iLowerNum=n%iFactor; iCurrNum=(n/iFactor)%10; iHigherNum=n/(iFactor*10); switch(iCurrNum) { case 0: iCount+=iHigherNum*iFactor; break; case 1: iCount+=iHigherNum*iFactor+iLowerNum+1; break; default: iCount+=(iHigherNum+1)*iFactor; } iFactor*=10; } return iCount; }int main(){ ULONGLONG n=123; cout<<Sum1s(n)<<endl; return 0;}3)x的个数(1<=x<=9)
#include<iostream>using namespace std;typedef __int64 LONGLONG;typedef unsigned __int64 ULONGLONG;LONGLONG Sumxs(ULONGLONG n,int x){ ULONGLONG iCount=0; ULONGLONG iFactor=1; ULONGLONG iLowerNum=0; ULONGLONG iCurrNum=0; ULONGLONG iHigherNum=0; while(n/iFactor) { iLowerNum=n%iFactor; iCurrNum=(n/iFactor)%10; iHigherNum=n/(iFactor*10); if(iCurrNum<x)iCount+=iHigherNum*iFactor; else if(iCurrNum==x)iCount+=iHigherNum*iFactor+iLowerNum+1; else iCount+=(iHigherNum+1)*iFactor; iFactor*=10; } return iCount; }int main(){ ULONGLONG n=123; for(int i=1;i<=9;i++)cout<<Sumxs(n,i)<<endl; return 0;}
0 0
- 1的数目
- 1的数目
- 1的数目
- 1的数目
- 1的数目
- 1的数目
- 1的数目
- 1的数目
- 1的数目
- 1的数目
- BOP - 1的数目
- 1的数目
- 1的数目
- 1的数目
- 1的数目
- 1的数目
- “1”的数目
- 1的数目
- 连通分量个数(连通分量_并查集)
- android——eclipse_导入源码
- 黑马程序员——数组排序
- Xcode5 使用XCTest进行单元测试
- [开源名人录] Fabrice Bellard
- 1的数目
- 优化
- linux 等待队列
- sublime text 的魅力和常用插件
- 电商知假售假 呼吁“追溯电商”时代
- 第九章 9.5.5节练习 & 9.6节练习
- 阿里巴巴2014校招笔试题-2013年9月14日
- Win8.1系统下 VS2010等版本中输入中文变问号的解决办法
- ios 判断iPhone、iPad硬件型号