6 条题解

  • 1
    @ 2025-11-21 23:49:48
    #include <stdio.h>
    #define int long long
    int ksm(int a) {
    	int b = 2;
    	int ans = 1;
    	while (a > 0) {
    		if (a % 2 == 1) {
    			ans = (b * ans) % 1000000; 
    		}       
    		b = (b * b) % 1000000;       
    		a /= 2;       
    	}
    	ans = (ans - 1 + 1000000) % 1000000;
    	return ans;
    }
    signed main() {
    	int t;
    	scanf("%lld", &t);
    	while (t--) {
    		int m;
    		scanf("%lld", &m);
    		int num = ksm(m);
    		printf("%lld\n", num);
    	}
    	return 0;
    }
    
    • 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
              标签
              (无)
              递交数
              656
              已通过
              198
              上传者