1049. Counting Ones (30)计算个位数出现次数.
2016-03-10 14:01
260 查看
传送门:https://www.patest.cn/contests/pat-a-practise/1049#include <iostream>
#include <vector>
#include <stdio.h>
#include <algorithm>
#include <queue>
#include <string.h>
#include <unordered_map>
#include <map>
using namespace std;
int a[10]={0};
void deal(int n,int value){
if(n<=0)
return;
int one,ten;
one = n%10;
n/=10;
ten=n;
for (int i=0; i<=one; ++i) {//个位上出现的数统计下来
a[i]+=value;
}
while (ten) {
a[ten%10]+= (one+1)*value;
ten/=10;
}
for (int i=0; i<10; ++i) {
a[i]+=value*n;
}
a[0]-=value;//第一位是0的情况排除.
deal(n-1,value*10);
}
int main(){
int n;
scanf("%d",&n);
deal(n,1);
printf("%d\n",a[1]);
return 0;
}
#include <vector>
#include <stdio.h>
#include <algorithm>
#include <queue>
#include <string.h>
#include <unordered_map>
#include <map>
using namespace std;
int a[10]={0};
void deal(int n,int value){
if(n<=0)
return;
int one,ten;
one = n%10;
n/=10;
ten=n;
for (int i=0; i<=one; ++i) {//个位上出现的数统计下来
a[i]+=value;
}
while (ten) {
a[ten%10]+= (one+1)*value;
ten/=10;
}
for (int i=0; i<10; ++i) {
a[i]+=value*n;
}
a[0]-=value;//第一位是0的情况排除.
deal(n-1,value*10);
}
int main(){
int n;
scanf("%d",&n);
deal(n,1);
printf("%d\n",a[1]);
return 0;
}
相关文章推荐
- 2016蓝桥杯假期任务之《数字游戏》
- PAT-Course List for Student (25)
- Linux服务器上监控网络带宽的18个常用命令
- 正则表达式 - 示例
- opencv Mat转CvMat
- 字符串拷贝
- 消除未使用声明变量的警告
- Picasso加载圆形图片和圆角图片
- 正则表达式 - 匹配规则
- 字符串与数组的转化iOS
- 基本的Git使用总结
- 安卓之引导页
- JS判断UA动态加载CSS的方法
- 使UITableViewCell之间的cell不显示分割线
- thrift 小结
- 如此之笨 storyboard里找view
- 未使用的变量不报警告
- 正则表达式 - 运算符优先级
- 关于toolbar的menu显示icon问题
- 多台web服务器之间共享session