zoukankan      html  css  js  c++  java
  • Lucky Pascal Triangle --- Gym

    题目

      https://vjudge.net/problem/Gym-102091F

    题意

      给出 T 组数据,每组数据给出一个 n,找杨辉三角前 n 层有多少个数是 7 的倍数。

    题解

      先打表成杨辉三角状找规律,然后会发现是一个以 7 为单位的变化方式,那么递归 *7,同时维护其中有多少个不是 7 的倍数的数,那么最后也就是找不是整块出现的三角形里面有多少个小三角,这个可以在回溯时进行处理。

      tip:注意预先处理 2 的逆元。

     1 #include <bits/stdc++.h>
     2 #define ll long long
     3 #define ull unsigned long long
     4 #define met(a, b) memset(a, b, sizeof(a))
     5 #define rep(i, a, b) for(int i = a; i <= b; i++)
     6 #define bep(i, a, b) for(int i = a; i >= b; i--)
     7 #define lowbit(x) (x&(-x))
     8 #define MID ((l + r) / 2)
     9 #define ls (pos<<1)
    10 #define rs ((pos<<1)+1)
    11 #define pb push_back
    12 #define ios() ios::sync_with_stdio(0)
    13 
    14 using namespace std;
    15 
    16 const int maxn = 1e5 + 1010;
    17 const int inf = 0x3f3f3f3f;
    18 const ll INF = 0x3f3f3f3f3f3f3f3f;
    19 const ll mod = 1e9 + 7;
    20 const double eps = 1e-4;
    21 
    22 ll inv2, res;
    23 
    24 ll qmul(ll x, ll n) {
    25     ll sum = 1;
    26     while(n) {
    27         if(n & 1) (sum *= x) %= mod;
    28         (x *= x) %= mod;
    29         n >>= 1;
    30     }
    31     return sum;
    32 }
    33 void f(ll &l, ll &r, ll now, ll &num) {
    34     if(l*7 < r) {
    35         l *= 7;
    36         f(l, r, now*(1 + 7) %mod *7 %mod *inv2 %mod, num);
    37     }
    38     if(r == 0) return;
    39     ll t = r / l;
    40     (res -= num*now %mod *(1 + t) %mod *t %mod *inv2 %mod) %= mod;
    41     num = num*(t + 1) % mod;
    42     r %= l;
    43     l /= 7;
    44 }
    45 
    46 int main() {
    47     inv2 = qmul(2, mod - 2);
    48     ios();
    49     int T, k = 0;
    50     cin >> T;
    51     while(T--) {
    52         ll n;
    53         cin >> n;
    54         n++;
    55         res = ((1 + n) % mod) *(n % mod) % mod *inv2 % mod;
    56         ll l = 1, r = n, num = 1;
    57         f(l, r, 1ll, num);
    58         res = (res % mod + mod) % mod;
    59         cout << "Case " << ++ k << ": ";
    60         cout << res << endl;
    61     }
    62     return 0;
    63 }
  • 相关阅读:
    WinInet中的FTP操作
    CodeIgniter 用户指南 版本 1.7.2
    《Windows Mobile实例开发》电子书提供下载
    程序静默安装的参数总结
    Select a table of certain webpage
    568A
    在IIS 5.1 或IIS6 中配置PHP 的FastCGI模式
    镁天三国育将篇
    镁天三国军事篇
    windows 环境下的 protoc 安装
  • 原文地址:https://www.cnblogs.com/Ruby-Z/p/12191347.html
Copyright © 2011-2022 走看看