• hdu 3049 Data Processing


    利用P是素数所以有:

    (1). A/B%P=((A%(B*P))/B)%p;

    (2). A/B%P=A*(B`)%P 其中B`是B对于P的逆元

    方法一:
    
    #include<stdio.h>
    int main() {
    	int i, t, x, v = 1, n, m, ans;
    	long long P, a[51000], sum;
    	scanf("%d", &t);
    	while (t-- && scanf("%d", &n)) {
    		a[0] = 1;
    		sum = 0;
    		P = 1000003;
    		P *= n;
    		for (i = 1; i <= 40000; i++) {
    			a[i] = 2 * a[i - 1];
    			if (a[i] >= P)
    				a[i] -= P;
    		}
    		for (i = 0; i < n; i++) {
    			scanf("%d", &x);
    			sum += a[x];
    			if (sum >= P)
    				sum -= P;
    		}
    		ans = sum / n;
    		printf("Case %d:%d\n", v++, ans);
    	}
    }
    
    方法二:
    
    #include<stdio.h>
    #include<math.h>
    #define nmax 1000003
    #define nnum 40001
    int num[nnum], x, y;
    int extend_gcd(int a, int b) {
    	if (b == 0) {
    		x = 1, y = 0;
    		return a;
    	}
    	int d = extend_gcd(b, a % b);
    	int tx = x;
    	x = y;
    	y = tx - a / b * y;
    	return d;
    }
    void init() {
    	int i, te;
    	for (i = 0, te = 1; i < nnum; i++) {
    		num[i] = te;
    		te = te * 2 % nmax;
    	}
    }
    int main() {
    #ifndef ONLINE_JUDGE
    	freopen("t.txt", "r", stdin);
    #endif
    	int t, n, i, j, k;
    	long long res;
    	init();
    	while (scanf("%d", &t) != EOF) {
    		for (i = 1; i <= t; i++) {
    			scanf("%d", &n);
    			for (j = 0, res = 0; j < n; j++) {
    				scanf("%d", &k);
    				res += num[k];
    				if (res >= nmax) {
    					res -= nmax;
    				}
    			}
    			extend_gcd(n, nmax);
    			x = (x % nmax + nmax) % nmax;
    			res = res * x % nmax;
    			printf("Case %d:%I64d\n", i, res);
    		}
    	}
    	return 0;
    }
    
  • 相关阅读:
    2019-8-31-win10-uwp-使用-WinDbg-调试
    PHP simplexml_import_dom() 函数
    PHP asXML() 函数
    PHP registerXPathNamespace() 函数
    PHP getNamespaces() 函数
    PHP getName() 函数
    查看收集统计信息的时间间隔
    SPOJ DISQUERY LCA + 倍增
    洛谷P3958 奶酪 并查集
    洛谷P2678 跳石头
  • 原文地址:https://www.cnblogs.com/xiaoxian1369/p/2145658.html
Copyright © 2020-2023  润新知