4 条题解

  • 0
    @ 2024-10-21 1:48:30

    #include <stdio.h> // 快速幂取模函数 //B站大佬有专门教汉诺塔模型的 long long hannuota(long long b, long long e, long long m) { long long r = 1; while (e > 0) { if (e % 2 == 1) { r = (r * b) % m; } b = (b * b) % m; e /= 2; } return r; }

    int main() { int N; scanf("%d", &N); while (N--) { int m; scanf("%d", &m); // 计算2^m - 1的最后六位,并输出 long long steps = (hannuota(2, m, 1000000) - 1 ) % 1000000; printf("%lld\n", steps); } return 0; }

    • 0
      @ 2023-10-19 23:49:28
      #include<stdio.h>
      int n;
      long long m;
      long long ksm(long long m)
      {
      long long sum = 2;
      long long p = 1;
      while ((p * 2)< m)
      {
      sum = (sum * sum) % 1000000;
      p *= 2;
      }
      if (p != m)
      {
      m = m - p;
      sum = (ksm(m) * sum) % 1000000;
      }
      return sum;
      }
      
      int main()
      {
      scanf("%d", &n);
      while (n --)
      {
      scanf("%lld", &m);
      printf("%lld\n", ksm (m) - 1);
      m = 0;
      }
      return 0;
      }
      
      
      • 0
        @ 2023-10-8 22:26:41
        #include<iostream>
        #include<vector>
        #include<algorithm>
        #include <bits/stdc++.h>
        using namespace std;
        
        //投机取巧,找规律,数量大于62500时,每62500个数作为一个循环,保留的六位数为109376
        int main() {
            int n;
            cin >> n;
            while (n--) {
                int x;
                cin >> x;
                int sum=1;
                if(x<62500) {
                    while (x--) {
                        sum *= 2;
                        if (sum > 999999)
                            sum %= 1000000;
                    }
                    cout << sum - 1 << endl;
                }
                else
                {
                    x%=62500;
                    sum=109376;
                    while (x--) {
                        sum *= 2;
                        if (sum > 999999)
                            sum %= 1000000;
                    }
                    cout << sum - 1 << endl;
                }
            }
            return 0;
        }
        
        • 0
          @ 2023-10-8 20:33:44
          薯饼海特供(快速幂版)
          #include<stdio.h>
          int ksm(int n);
          int main()
          {
          	int n;
          	scanf("%d",&n);
          	while(n--)
          	{
          		int m;
          		scanf("%d",&m);
          		long long sum=ksm(m);
          		printf("%lld\n",sum-1);
          	}
          }
          
          int ksm(int n)
          {
          	long long ans=1;
          	long long a=2;
          	while(n!=0)
          	{
          		if(n%2!=0)
          		{
          			ans=ans*a%1000000;
          		}
          		a=(a*a)%1000000;
          		n/=2;
          	}
          	return ans;
          }```
          
          • 1

          信息

          ID
          156
          时间
          1000ms
          内存
          128MiB
          难度
          6
          标签
          (无)
          递交数
          568
          已通过
          162
          上传者