• CF_Lucky Sum


    幸运数字的定义是这样:仅含4和7且不比n小的数为n的幸运数字。

    输入范围l,r要求输出这个范围内的数字的幸运数字之和。

    代码:

     1 #include<stdio.h>
     2 #define N 1024
     3 typedef long long ll;
     4 ll a[N+1];
     5 ll f(ll n)
     6 {
     7     if(n==0)
     8         return 0;
     9     int i;
    10     ll ans=0;
    11     for(i=1;i<=N;i++)
    12     {
    13         if(a[i]<n)
    14             ans+=a[i]*(a[i]-a[i-1]);
    15         else{
    16             ans+=a[i]*(n-a[i-1]);
    17             break;
    18         }
    19     }
    20     return ans;
    21 }
    22 int main(void)
    23 {
    24     int l,r,i;
    25     scanf("%d%d",&l,&r);
    26     a[1]=4,a[2]=7;
    27     int t=3;
    28     for(i=1;i<=511;i++)
    29     {
    30         a[t++]=a[i]*10+4;
    31         a[t++]=a[i]*10+7;
    32     }
    33     printf("%I64d
    ",f(r)-f(l-1));
    34     return 0;
    35 }

    其实可以先把10^10以内的幸运数字存进数组,然后分别计算l-1,r,以内的数字的幸运数字的和,两者相减即为最终结果。

  • 相关阅读:
    Spring:dispatchservlet
    信息系统设计
    数据流图的绘制方法
    信息系统管理工程师学习笔记
    JS语法学习笔记
    jQuery
    用Excel生成Sql
    JAVA-Reflect
    Java创建对象的过程
    有关死锁那点事儿
  • 原文地址:https://www.cnblogs.com/rootial/p/3205825.html
Copyright © 2020-2023  润新知