求 1 出现的个数
来源:互联网 发布:android直播app源码 编辑:程序博客网 时间:2024/05/24 03:48
写一个函数f(N),返回1到N之间出现的“1”的个数,比如f(12)=5。
源代码:
#include <stdio.h>
int f(int n)
{
int i,_i,_n;
int count=0;
for(i=1;i<=n;i++)
{
_n=i;
while(_n!=0)
{
_i=_n%10;
_n=_n/10;
if(_i==1) count++;
}
}
return count;
}
main()
{
int n,count;
printf("Please input N here:");
scanf("%d",&n);
count=f(n);
printf("From 1 to %d ,there are %d ./n",n,count);
}
优化后的代码1
#include<stdio.h>
long myfun(long n)
{
int prior;
int i=1;
long nTemp=n,count=0;
while(0!=n)
{
prior=n%10;
n=n/10;
if(prior>1) count+=(n+1)*i;
else if(1==prior) count+=n*i+(nTemp%i)+1;
else count+=n*i;
i*=10;
}
return count;
}
main()
{
long n;
printf("请输入N:");
scanf("%ld",&n);
printf("从 1 到 %ld 出现 1 的次数为: %ld/n",n,myfun(n));
}
扩展#include<stdio.h>
#include<math.h>
long myfun1(long n,int x)
{
long count=0;
long n1=n;
int i=1,a;
while(n!=0)
{
a=n%10;
if(a>x)
count += (long)pow(10,i-1)+a*(i-1)*(long)pow(10,i-2);
else if(a==x)
count += a*(i-1)*(long)pow(10,i-2)+1+n1%(long)pow(10,i-1);
else
count += a*(i-1)*(long)pow(10,i-2);
n=n/10;
i++;
}
return count;
}
#include<math.h>
long myfun1(long n,int x)
{
long count=0;
long n1=n;
int i=1,a;
while(n!=0)
{
a=n%10;
if(a>x)
count += (long)pow(10,i-1)+a*(i-1)*(long)pow(10,i-2);
else if(a==x)
count += a*(i-1)*(long)pow(10,i-2)+1+n1%(long)pow(10,i-1);
else
count += a*(i-1)*(long)pow(10,i-2);
n=n/10;
i++;
}
return count;
}
main()
{
long n,count;
int x;
printf("请输入N:");
scanf("%ld",&n);
printf("请输入要查询的数X(1-9):");
scanf("%d",&x);
count=myfun1(n,x);
printf("从1到%ld出现%d的次数为:%ld/n",n,x,count);
{
long n,count;
int x;
printf("请输入N:");
scanf("%ld",&n);
printf("请输入要查询的数X(1-9):");
scanf("%d",&x);
count=myfun1(n,x);
printf("从1到%ld出现%d的次数为:%ld/n",n,x,count);
}
- 求 1 出现的个数
- 求0到n之间出现的"1"的个数
- 求1-n中1出现的个数
- 求1的个数
- 求出现字母个数
- 求1的个数问题
- 2.1求1的个数
- 二进制求1的个数
- 求1到N的数中1出现的个数
- 求数组里面仅仅出现一次的数字的个数
- 【编程之美】读书笔记:求1到N之间整数中出现1的个数
- 数位dp(求1-n中数字1出现的个数)
- 求1到N之间整数中出现1的个数
- 求1到100所有整数中出现9的个数
- 使用C语言编程,求1-100中9出现的个数
- 输入一个数,求从一到那个数中1出现的个数
- 求数组中各个数的个数出现次数
- 经典算法-给出2n+1个数,其中有2n个数出现过两次,用简便的最方法求出现一次的数
- Qt使用QGraphicsView实现滑动窗体效果
- 学习编程的感受
- 程序运行时间的测量
- (转载)canny算法
- 新来
- 求 1 出现的个数
- 当生命成为权力的代价
- arm-linux交叉编译环境的搭建
- Ajax使用流程
- pageEncoding和charset的区别
- 这里很隐蔽……
- 堆和栈的区别(转)
- meta
- 等死模式与穿越模式(转)