zoukankan      html  css  js  c++  java
  • Codeforces 997B Roman Digits【暴力】【枚举】

    缺欠的是做题的思路,当看到这道题发现n是10^9级别,第一反应是得找到一个公式。但怎么找没想出来。

    满足i+j+k+p = n (i,j,k,p分别是1,5,10,50取的个数),我们可以用n^3代价(枚举i,j,k)n比较小的时候的答案,并试着从枚举得到的答案里找到规律。

    事实也确实能从中找到规律,n从12开始就是等差数列了,方差49。

    这题说难不难,但当时卡了很多人。

    缺少的是一种思路吧。

    也确实第一道遇到的半打表ac的题

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 long long n,z,ans;
     4 long long dfs(int x)
     5 {
     6     map<long long,int>ma;
     7     ma.clear();
     8     long long num=0;
     9     for(int i=0;i<=x;i++)
    10     for(int j=0;j+i<=x;j++)
    11         for(int k=0;k+i+j<=x;k++)
    12     {
    13         z=i+j*5+k*10+(x-i-j-k)*50;
    14         if(!ma[z]) {ma[z]=1;num++;}
    15     }
    16     return num;
    17 }
    18 int main()
    19 {    
    20     scanf("%lld",&n);
    21     if(n<=20) ans=dfs(n);
    22     else ans=dfs(20)+(n-20)*49;
    23     printf("%lld
    ",ans);
    24     return 0;
    25 }

    代码是从这里摘的,没有自己写了

    https://blog.csdn.net/qq_37868325/article/details/80879686

  • 相关阅读:
    元数据管理
    sqoop 安装
    postgres 索引
    postgres 表和库等信息大小统计
    Perl基础语法
    Perl 认识简介
    Oracle层次查询start with connect by
    jquery.cookie.js 的使用指南
    JavaScript中cookie使用
    CSS实现垂直居中的4种思路
  • 原文地址:https://www.cnblogs.com/ZhenghangHu/p/9255724.html
Copyright © 2011-2022 走看看