5 条题解

  • 0
    @ 2025-11-14 19:38:52
    #include<stdio.h>
    int main(){
    	int n,m;
    	scanf("%d",&n);
    	while(n--){
    		scanf("%d",&m);
    	    long long ans=1,a=2;
    	    while(m!=0){
    		    if(m%2!=0)ans=ans*a%1000000;
    		    a=(a*a)%1000000;  m/=2;
            }
            printf("%lld\n",ans-1);
        }
    }//依旧快速幂
    
    • 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
            标签
            (无)
            递交数
            602
            已通过
            180
            上传者