算法提高 题目 3 函数求值

本文探讨了算法提升中的一个关键题目,聚焦于函数的求值过程,深入解析了解题思路与方法。

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

问题描述
  设 F(N) 表示正整数 1 到正整数 N 中,数字 1,2 总共出现了多少次。例如 N = 10 时:1, 2, 3, 4, 5, 6, 7, 8, 9, 10 这 10 个数中,数字 1 出现了两次,数字 2 出现了 1 次,所以数字 1, 2 总共出现了 3 次,因此 F (10) = 3。
  现在给你正整数 N ,请你求出 F(N) 的值。由于 F(N) 可能很大,你仅需输出 F(N) 除以 20123 的余数。
输入格式
  输入数据仅一行,包含一个正整数 N (1 ≤ N ≤ 10100 ),表示函数 F(N)的参数。
输出格式
  输出仅一个整数,为 F(N) 除以 20123 的余数。
样例输入
10
样例输出

3

#include "iostream"
#include "algorithm"
#include "vector"
#include "set"
#include "string.h"
#include "stdio.h"
using namespace std;

struct bign
{
    int d[1000];
    int len;
    bign()
    {
        len=0;
        memset(d,0,sizeof(d));
    }
    bign(string s)
    {
        len=0;
        memset(d,0,sizeof(d));//即使是有字符串赋值,也不能忘记开始时赋0
        len=s.length();
        for(int i=0; i<len; i++)
            d[i]=s[len-1-i]-'0';

    }
    bign operator+(bign b)
    {
        bign c;
        int carry=0;

        for(int i=0; i<len||i<b.len||carry; i++)
        {

      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值