fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #include <ext/pb_ds/assoc_container.hpp>
  4. #include <ext/pb_ds/tree_policy.hpp>
  5. using namespace __gnu_pbds;
  6. #define ordered_set tree<long long, null_type,less<>, rb_tree_tag,tree_order_statistics_node_update>
  7.  
  8. using ll = long long;
  9. using ull = unsigned long long;
  10. using ld = long double;
  11. using vll = vector<ll>;
  12. using pll = pair<ll, ll>;
  13. using mll = map<ll,ll>;
  14. using sll = set<ll>;
  15. #define iv(v) for(auto &i:v) cin >> i
  16. #define ov(v) for(auto &i:v) cout << i << " "
  17. #define all(v) v.begin(), v.end()
  18. #define rall(v) v.rbegin(), v.rend()
  19. #define yes cout << "YES\n"
  20. #define no cout << "NO\n"
  21.  
  22. #ifdef ONLINE_JUDGE
  23. #define Bismillah ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
  24. #else
  25. #define Bismillah ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); \
  26. freopen("in.txt", "r", stdin); \
  27. freopen("out.txt", "w", stdout);
  28. #endif
  29.  
  30. const ll MOD = 1e9 + 7;
  31.  
  32. ll add(ll a, ll b) {return ((a % MOD) + (b % MOD)) % MOD;}
  33. ll mul(ll a, ll b) {return ((a % MOD) * (b % MOD)) % MOD;}
  34. ll sub(ll a, ll b) {return (((a - b) % MOD) + MOD) % MOD;}
  35. ll modExp(ll a, ll b) {
  36. if (b <= 0) return 1;
  37. ll ret = modExp(a * a % MOD, b / 2);
  38. if (b % 2) ret = ret * a % MOD;
  39. return ret;
  40. }
  41. ll inverse(ll b) {return modExp(b, MOD - 2);}
  42. ll divv(ll a, ll b) {return ((a % MOD) * (inverse(b) % MOD)) % MOD;}
  43. const ll N=1e7+1;
  44.  
  45. ll spf[N];
  46. #define ll int
  47.  
  48. void sieve(int n){
  49. for(ll i=1;i<=n;i++)spf[i]=i;
  50. for(int i = 2; i * i <= n; i++){
  51. if(spf[i]==i){
  52. for(int j = i * i; j <= n; j += i)
  53. if(spf[j]==j)spf[j]=i;
  54. }
  55. }
  56. }
  57.  
  58. ll countDivisors(ll n) {
  59. ll ans=1;
  60. while (n>1) {
  61. ll p=spf[n];
  62. ll count=0;
  63. while (n%p==0) {
  64. n/=p;
  65. count++;
  66. }
  67. ans*=(count+1);
  68. }
  69. return ans;
  70. }
  71.  
  72.  
  73. vector<int> divisors(int x){
  74. vector<pair<int,int>> f;
  75. while(x>1){
  76. int p=spf[x], c=0;
  77. while(x%p==0){ x/=p; c++; }
  78. f.push_back({p,c});
  79. }
  80. vector<int> divs = {1};
  81. for(auto &p:f){
  82. int sz=divs.size();
  83. for(int i=0;i<sz;i++){
  84. int val = divs[i];
  85. for(int k=0;k<p.second;k++){
  86. val *= p.first;
  87. divs.push_back(val);
  88. }
  89. }
  90. }
  91. sort(divs.begin(), divs.end());
  92. return divs;
  93. }
  94. void solve() {
  95.  
  96. }
  97.  
  98. int main() {
  99. Bismillah
  100. ll t=1;
  101. cin >> t;
  102. vector<ll> v(1e5 + 1);
  103. v[0] = 0;
  104. v[1] = v[2] = v[3] = 1;
  105. for (int i = 4; i <= 1e5; i++) v[i] = (v[i - 1] + v[i - 3]) % MOD;
  106. int i = 1;
  107. while (t--) {
  108. //solve();
  109. ll k, n;
  110. cin >> k >> n;
  111. cout << "Case " << i << ": " << ((2 * k) % MOD * v[n]) % MOD << '\n';
  112. i++;
  113. }
  114. return 0;
  115. }
Success #stdin #stdout 0.01s 5280KB
stdin
Standard input is empty
stdout
Case 1: -378307608