在某个范围内寻找最大的f(n)=n 其中f(n)为计算小于等于n的数值中含有“1”的总和...

本文探讨了一种方法来计算小于指定整数的所有整数中包含数字'1'的个数,并找出拥有最大'1'数量的整数及其值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<iostream>
using namespace std;
pair<int,int> mypair;
int count_1(int n)  //统计一个数值中含有“1”的个数
{
 int sum=0;
 while(n!=0)
 {
  if(n%10==1)
  {
   sum++;  
  }
  n/=10;
 }
 return sum;

}
int f(int n)   //<=n内的所有数值含有“1”的个数的总和
{
 int sum=0;
 while(n)
 {
  sum+=count_1(n);
  n--;
 }
 return sum;
}
int main()
{
 int maxcount=0;
 int count=0;
 int index=0;
 for(int i=1;i<4000000000;i++)   //寻找最大的f(n)=n   
 {
  count=f(i);
  if(count==i)
   if(count>maxcount)
   {
    maxcount=count;
    index=i;
   }
 }
 if(maxcount==0&&index==0)
  cout<<"没有符合的";
 else
 {
 mypair=make_pair(maxcount,index);
 cout<<"出现的最大的 1 的个数是"<<mypair.first<<"该值出现在"<<mypair.second<<endl;
 }
 return 0;
 

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值