• 【编程100%】22-12 基本算法之 大整数截取


    题目描述

    时间限制: 1000MS
    内存限制: 65536KB

    题目描述:

    花花有一个很珍贵的数字串,但是它太长了,没有办法保留下来,所以她想截取其中一段保存下来,但是她希望截取下来的这一段数对1000000007取模之后等于Ai,她想知道有多少种截取方案。数字串S中截取一段是指S[L], S[L+1], …, S[R]连起来所形成的十进制数,其中L和R满足1≤L≤R≤|S|。例如S=“1023456789”,S(1,2)=10,S(2,4)=23,S(2,10)=23456789。


    输入描述

    第一行一个数字串,长度不超过30000。

    第二行一个数T,表示询问的数量。(T≤100)

    接下来T行,每行一个非负整数Ai,表示询问有多少种截取方案使得其值模1000000007后等于Ai。(0≤Ai<1000000007)

    输出描述

    共T行,每行一个非负整数,表示方案数。

    示例:

    样例输入

    1000000008001
    4
    8
    0
    1
    10

    样例输出

    9
    39
    5
    2
    

    思路

    模数的使用方式:模数的一些分布特性如下:
    1.(a + b)%c =((a%c)+(b%c))%c
    2. (a * b)%c =((a%c)*(b%c))%c
    3.(a – b)%c =((a%c)–(b%c))%c

    实现

    1. #include
    2. #include
    3. #include
    4. #define MAX_LEN 30000
    5. const unsigned int MOD = 1000000007;
    6. int getCountOfMod(char *str, int key)
    7. {
    8. unsigned int i =0, j = 0;
    9. int count = 0;
    10. //printf("str=%s,ai=%d:", str, key);
    11. for(i = 0; i < strlen(str); i++)
    12. {
    13. long remain = str[i] - '0'; //AC 64%
    14. // unsigned int remain = str[i] - '0'; //AC 55%
    15. if (remain == key)
    16. count++;
    17. for(j = i + 1; j < strlen(str); j++)
    18. {
    19. remain = ((remain * 10) % MOD + (str[j] - '0')) % MOD;
    20. if (remain == key)
    21. count++;
    22. }
    23. }
    24. return count;
    25. }
    26. int main()
    27. {
    28. int T = 0, Ai = 0;
    29. char *str = (char *)malloc((MAX_LEN + 2) * sizeof(char));
    30. scanf("%s", str);
    31. //printf("%s\n", str);
    32. scanf("%d", &T);
    33. //printf("%d\n", T);
    34. for (int i = 0; i < T; i++) {
    35. scanf("%d", &Ai);
    36. printf("%d\n", getCountOfMod(str, Ai));
    37. //printf("%d\n", Ai);
    38. }
    39. free(str);
    40. return 0;
    41. }

    通过率仅有64%;欢迎各位大咖指导

    ----------------------------------------------------------------------------------------

  • 相关阅读:
    MobaXterm使sftp目录与cmd目录同步
    【FPGA教程案例84】仪器设备1——使用示波器观察DDS输出正弦信号时域波形
    互联网产品说明书指南,附撰写流程与方法
    PMP 11.27 考试倒计时31天!来提分啦!
    深入理解 Dockerfile 和 docker-compose[实战篇]
    早安心语|不委屈不将就,让生活充满仪式感
    【R语言数据科学】:变量选择(三)主成分回归和偏最小二乘回归
    jvm 的主要组成部分_java培训
    QT 实现16进制与字符串互转
    [西湖论剑 2022]real_ez_node
  • 原文地址:https://blog.csdn.net/iamonlyme/article/details/126376374