U68641 划水(swim.pas/c/cpp)

U68641 划水(swim.pas/c/cpp)

题目背景

小小迪带你划水。

题目描述

原题

输入输出格式

输入格式:

第一行一个数 T。 接下来 T 行每行一个数表示 n

输出格式:

输出 T 行每行一个整数表示这个数的子数

输入输出样例

输入样例#1:

2
1234567890123456789
1021

输出样例#1:

332876913
1158

sol:一个个拆出来过于睿智,所以我们一位位讨论贡献,十分简单

// luogu-judger-enable-o2
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
inline ll read()
{
    ll s=0;
    bool f=0;
    char ch=‘ ‘;
    while(!isdigit(ch))
    {
        f|=(ch==‘-‘); ch=getchar();
    }
    while(isdigit(ch))
    {
        s=(s<<3)+(s<<1)+(ch^48); ch=getchar();
    }
    return (f)?(-s):(s);
}
#define R(x) x=read()
inline void write(ll x)
{
    if(x<0)
    {
        putchar(‘-‘); x=-x;
    }
    if(x<10)
    {
        putchar(x+‘0‘);    return;
    }
    write(x/10);
    putchar((x%10)+‘0‘);
    return;
}
#define W(x) write(x),putchar(‘ ‘)
#define Wl(x) write(x),putchar(‘\n‘)
const int N=100005;
const ll Mod=1000000007;
int T,n;
ll Bin[N],SBin[N];
char S[N];
int main()
{
    int i;
    R(T);
    Bin[0]=SBin[0]=1;
    for(i=1;i<=100000;i++)
    {
        SBin[i]=(SBin[i-1]+(Bin[i]=Bin[i-1]*10%Mod))%Mod;
        Bin[i]=Bin[i-1]*10%Mod;
    }
    while(T--)
    {
        ll ans=0,Sum=1;
        scanf("%s",S+1);
        n=strlen(S+1);
        for(i=1;i<=n;i++)
        {
            int oo=S[i]-‘0‘;
            if(!oo) continue;
            ans=(ans+Sum*SBin[n-i]%Mod*oo)%Mod;
            Sum++;
        }
        Wl(ans);
    }
    return 0;
}
/*
input
1
1234567890123456789
output
332876913

input
1
1021
output
1158
*/

 

原文地址:https://www.cnblogs.com/gaojunonly1/p/10713631.html

时间: 2024-08-30 16:06:10

U68641 划水(swim.pas/c/cpp)的相关文章

NOIP第二次模拟赛 stage1【划分数列(seq.pas/c/cpp)

7划分数列(seq.pas/c/cpp) [题目描述] 给你一个有n个元素的数列,要求把它划分成k段,使每段元素和的最大值最小 [输入格式] 第一行两个正整数n,k 第二行为此数列ai [输出格式] 一行一个数,为题目所求答案 [样例输入] 5 2 2 1 3 4 5 [样例输出] 9 [数据规模] 30%数据 n <= 30, k <= 10 100%数据 n <= 100000, k <= n, ai <= 10^9 150%数据 n <= 100000, k &l

纪中5日T3 1566. 幸运锁(lucky.pas/c/cpp)

1566. 幸运锁(lucky.pas/c/cpp) 题目描述 有一把幸运锁,打开它将会给你带来好运,但开锁时需要输入一个正整数(没有前导0).幸运锁有一种运算,对于一个正整数,返回他的相邻两位数字间的差,如1135,运算结果为22(会去掉前导0). 现在已知只有经过反复运算最终结果为7的数才能打开这把锁,给你一个区间[a,b],问该区间中有多少个能打开幸运锁的幸运数. 输入 第一行两个整数a,b. 输出 一个整数K,表示共有多少个这样的数. 样例输入 1 10 样例输出 1 数据范围限制 [限

EX14 彩票中奖 (lottery.pas/c/cpp)

[题目描述]小明想试试运气去购买彩票,所以他开始研究彩票大乐透的玩法:超级大乐透是指由购买者从01—35共35个号码中选取5个号码为前区号码,并从01—12共12个号码中选取2个号码为后区号码组合为一注彩票进行的投注.每注金额人民币2元.小明打算用自己的零花钱去试试运气,选择了一组心目中的幸运数字,买了一张彩票.如下图: 两天后,中奖号码公布,小明开始研究到底中了多少奖金.获奖方式如上右图:例如,中4+2就表示前区有4个数字相同,后区2个数字相同,获得三等奖,奖金3000元. 对照中奖号码对小明

清北学堂 最大速度

最大速度 (maxv.pas/c/cpp) [问题描述] Ron的老爸的Flying Car出了些问题,现在必须要在地上跑到很大的速度才能飞起来,但是Flying Car飞起来的那一刻不能被麻瓜看到.为了确保安全飞起来,需要知道车到可以飞起来的地方时所能达到的最大速度.他的Flying Car一开始拥有一个初速度,移动一次增加速度1:因为车道很窄,宽度只有1,所以仅当要转向的方向有路时才能转,左转一次减少速度35,右转一次减少速度40,当前进.左转.右转都无路可走的时候,调头(连左转两次或连右转

清北学堂 逃亡的准备

  逃亡的准备 (hallows.pas/c/cpp)   [问题描述] 在<Harry Potter and the Deathly Hallows>中,Harry Potter他们一起逃亡,现在有许多的东西要放到赫敏的包里面,但是包的大小有限,所以我们只能够在里面放入非常重要的物品,现在给出该种物品的数量.体积.价值的数值,希望你能够算出怎样能使背包的价值最大的组合方式,并且输出这个数值,赫敏会非常地感谢你. [输入文件](hallows.in) (1)第一行有2个整数,物品种数n和背包装

逃亡的准备

逃亡的准备 (hallows.pas/c/cpp)   [问题描述] 在<Harry Potter and the Deathly Hallows>中,Harry Potter他们一起逃亡,现在有许多的东西要放到赫敏的包里面,但是包的大小有限,所以我们只能够在里面放入非常重要的物品,现在给出该种物品的数量.体积.价值的数值,希望你能够算出怎样能使背包的价值最大的组合方式,并且输出这个数值,赫敏会非常地感谢你. [输入文件](hallows.in) (1)第一行有2个整数,物品种数n和背包装载体

9.20 模拟试题

请注意,所有题目使用文件输入输出.输入文件名.输出文件名前缀同题目名前缀,输入文件名后缀为.in,输出文件名后缀为.out. 例如,对于第一题,输入文件为count.in,而输出文件名为count.out. TL.ML分别表示时间限制.内存限制. Good Luck & Have Fun   kAc A 约数之和(count.pas/c/cpp) TL:1S  ML:128MB [Description] 我们用D(x)表示正整数x的约数的个数.给定一个正整数N,求D(1)+D(2)+…+D(N

杭州的培训Day2考试

简单来说就是完了 思路都对了 就是写不出来 浪费了三个小时来做第一题 还是没有过 然而第三题也没有做对 第二题没空做 这样就... 报零了! 然后第一题: 1.分糖果   (candy.pas/c/cpp) [问题描述] 幼儿园的小朋友要吃糖果,正在幼儿园帮忙的小x接到了这个任务,当然,这个任务不是那么简单. 现在有n名小朋友,m颗糖果,每个小朋友对糖果的需求都不一样,如果知道第i个小朋友需要x[i]颗糖,但是小x必须分给第i个小朋友y[i]颗糖,老师就认为小朋友的不高兴指数为|x[i]/v-y

【数论Day3】进制问题 题解

数论进入第三天,进制问题是常用提醒,是数论的一个重要知识点,常考! 题面:http://www.cnblogs.com/ljc20020730/p/6935255.html 1.K进制数(Kbased.pas/c/cpp) 首先明确数据范围: [数据规模和约定] 对于40%的数据,a的长度不超过5. 对于100%的数据,a的长度不超过100000. 对于40%暴力枚举不多说,上代码: var t,i,k,tt:longint; a:qword; s:string; function pow(x,