当前位置: 首页 > wzjs >正文

wordpress 防站教程有什么国外的设计网站推荐

wordpress 防站教程,有什么国外的设计网站推荐,足球门户网站建设,1688官网网页版UVa1457/LA4746 Decrypt Messages 题目链接题意输入格式输出格式 分析测试数据生成AC 代码 题目链接 本题是2009年icpc亚洲区域赛上海赛区的题目 题意 假设从2000年1月1日00:00:00到现在经过了x秒,计算 x q m o d p x^q\;mod\;p xqmodp,设答案为a。这里…

UVa1457/LA4746 Decrypt Messages

  • 题目链接
  • 题意
    • 输入格式
    • 输出格式
  • 分析
  • 测试数据生成
  • AC 代码

题目链接

  本题是2009年icpc亚洲区域赛上海赛区的题目

题意

  假设从2000年1月1日00:00:00到现在经过了x秒,计算 x q m o d p x^q\;mod\;p xqmodp,设答案为a。这里p严格大于x。已知p, q, a,求现在时刻x的所有可能值。
  提示:如果一个年份是4的倍数但不是100的倍数,或者这个年份是400的倍数,这个年份是闰年。闰年的二月有29天,其他年(平年)的二月只有28天。在本题中,如果年份除以10 的余数为5或者8,则这一年的最后还会有一个“闰秒”。比如,2005年12月31日23:59:59的下一秒是2005 年12月31日23:59:60,再下一秒才是2006 年1月1日00:00:00。

输入格式

  输入的第一行为数据组数T。每组数据包含一行,包含3 个整数p, q, a(2<p≤1000000007,1<q≤10,0≤a<p,p 保证为素数)。

输出格式

  对于每组数据,输出所有可能的时间,按照时间顺序排列。如果无解,出“Transmission error”。

分析

  离散对数解高次模方程经典题目,详细思路《算法竞赛入门经典–训练指南》第444页有写,涉及原根、离散对数等知识,参见OI Wiki。

模方程 x q ≡ a ( m o d m ) x^q\equiv a \pmod{m} xqa(modm)。如果找到了p的一个原根m,只需设 x = m y , a = m z x=m^y, a=m^z x=my,a=mz,则方程变为 m q y ≡ m z ( m o d m ) m^{qy}\equiv m^z \pmod{m} mqymz(modm),即 q y ≡ z ( m o d p − 1 ) qy\equiv z \pmod{p-1} qyz(modp1)。q是已知量,而z可以用大步小步算法得到(z是以m为底的a的离散对数,且解唯一),因此只需解这个模线性方程就可以得到y(注意,这一步可能多解),最后进行一次模取幂运算,得到x。

  注意,题面交代0≤a<p,对a=0的情况无法换元 a = m z a=m^z a=mz求离散对数,这时候x只有一个答案 x = 0 x=0 x=0,直接输出即可。由于模p可达 10 9 10^9 109,取模前的乘法运算需要用long long承接一下。

测试数据生成

  给一份生成测试数据的python脚本:

# -*- coding: utf-8 -*-from random import randint, choiceT, Q, N = 1000000008, 10, 2000if __name__ == '__main__':f, primes = [False] * T, []for i in range(2, T):if not f[i]:print(i)for j in range(2*i, T, i):f[j] = Trueif i > 2:primes.append(i)with open("in.txt", "w") as f:f.write(f'{N+1}\n')f.write(f'{choice(primes)} {randint(2, Q)} 0\n')for _ in range(N):p, q = choice(primes), randint(2, Q)f.write(f'{p} {q} {randint(0, p-1)}\n')

  运行大约2~3分钟就得到测试输入,贴到uDebug就能得到正确输出。

AC 代码

#include <iostream>
#include <algorithm>
#include <iomanip>
#include <cmath>
#include <vector>
#include <map>
using namespace std;#define T 32
int c[T] = {0}, p, q, a, t, kase = 0;int gcd(int a, int b, int& x, int& y) {if (!b) {x = 1; y = 0; return a;} else {int g = gcd(b, a%b, y, x);y -= a/b*x;return g;}
}int inv(int a, int n) {int x, y;return gcd(a, n, x, y) == 1 ? (x + n) % n : -1;
}int pow_mod(long long a, int n) {int ans = 1;while (n) {if (n & 1) ans = ans*a % p;a = a*a % p; n >>= 1;}return ans;
}bool is_primitive_root(int m) {for (int i=2; i*i<p; ++i) if ((p-1) % i == 0 && (pow_mod(m, i) == 1 || pow_mod(m, (p-1)/i) == 1)) return false;return true;
}int bsgs(int a, int b) {int m = sqrt(p+.5), s = inv(pow_mod(a, m), p), e = 1; map<int, int> x;x[1] = 0;for (int i=1; i<m; ++i) {e = e*(long long)a % p;if (!x.count(e)) x[e] = i;}for (int i=0, j=(p+m-1)/m; i<j; ++i) {if (x.count(b)) return i*m + x[b];b = b*(long long)s %p;}return -1;
}int f(int x) {return (x%4 == 0 && (x%100 || x%400 == 0) ? 31622400 : 31536000) + (x%10 == 5 || x%10 == 8);
}void print(int x) {int y = T-1, m = 12, d, hh, mm, ss;for (int i=1; i<T; ++i) if (c[i] >= x) {y = c[i] == x ? i : i-1;break;}if ((x -= c[y]) == 0) {cout << y+2000 << ".01.01 00:00:00" << endl;} else {bool f = y%4 == 0 && (y%100 || y%400 == 0);for (int i=1, t=0; i<13; ++i) {int s = (i==2 ? 28+f : (i==4 || i==6 || i==9 || i==11 ? 30 : 31)) * 86400;if (i==12 || t+s > x) {m = i; x -= t;break;}t += s;}d = min((x + 86399) / 86400, 31); x -= 86400*(d-1);hh = min(x / 3600, 23); x -= 3600*hh;mm = min(x / 60, 59); ss = x - 60*mm;cout << y+2000 << '.' << setw(2) << m << '.' << setw(2) << d << ' '<< setw(2) << hh << ':' << setw(2) << mm << ':' << setw(2) << ss << endl;}
}void solve() {cin >> p >> q >> a;cout << "Case #" << ++kase << ':' << endl;if (a == 0) {cout << "2000.01.01 00:00:00" << endl;return;}int m, x, y;for (m=2; m<p; ++m) if (is_primitive_root(m)) break;int b = bsgs(m, a), g = gcd(q, p-1, x, y);if (b % g) {cout << "Transmission error" << endl;return;}vector<int> ans; x = (x*(long long)b/g % (p-1) + p-1) % (p-1); y = (p-1) / g;for (int i=0; i<g; ++i) ans.push_back(pow_mod(m, x+i*y));sort(ans.begin(), ans.end());g = unique(ans.begin(), ans.end()) - ans.begin();for (int i=0; i<g; ++i) print(ans[i]);
}int main() {for (int i=1; i<T; ++i) c[i] = c[i-1] + f(i-1);cin >> t; cout << setfill('0');while (t--) solve();return 0;
}

文章转载自:

http://yIPAJa5s.zkjqj.cn
http://yfpxKFtg.zkjqj.cn
http://lqmcuIQ9.zkjqj.cn
http://11CAOJ4s.zkjqj.cn
http://G8sqYqrp.zkjqj.cn
http://Csyz0xXb.zkjqj.cn
http://XMqKjiEK.zkjqj.cn
http://UyyfbMjT.zkjqj.cn
http://5vYPQOXe.zkjqj.cn
http://nlrilObK.zkjqj.cn
http://E6muuAMF.zkjqj.cn
http://US1B9uNr.zkjqj.cn
http://GMZFNL2m.zkjqj.cn
http://Gz8UrgdT.zkjqj.cn
http://bxsUqLgI.zkjqj.cn
http://lGwyGhWk.zkjqj.cn
http://Ku0j5Sz4.zkjqj.cn
http://ks4RhmQ4.zkjqj.cn
http://BgO3FuwS.zkjqj.cn
http://ZkrDc7ih.zkjqj.cn
http://c1bX1wrz.zkjqj.cn
http://b5LOgTkD.zkjqj.cn
http://vaxvdSxm.zkjqj.cn
http://olVwC2iJ.zkjqj.cn
http://A84rNgDJ.zkjqj.cn
http://R7eBoy92.zkjqj.cn
http://oI088sPH.zkjqj.cn
http://PW3YEMTM.zkjqj.cn
http://SBAE3JEi.zkjqj.cn
http://s70fu2Pc.zkjqj.cn
http://www.dtcms.com/wzjs/684312.html

相关文章:

  • 做一个展示型网站要多少钱网上购物英语作文
  • 深圳微信分销网站制作门户网站系统建设清单
  • 公司做网站推广有效果吗找资料的免费网站
  • 怎么做能上谷歌网站企业网站小程序源码
  • 网站建设极地网wordpress关注微信登陆
  • 长治哪家公司做网站好河北利用关键词优化网页
  • 怎么在网站上做按钮网页游戏宣传片排行榜
  • 全屏网站 图片优化dede网站名称更改不了
  • 湖北二师网站建设排名太原网络搭建
  • 免费做网站百度能录入网址正能量
  • 做兼职什么网站比较好如何在云服务器上搭建网站
  • 专注服务于站长和网站的信息平台.wordpress导航标签文件在哪
  • 给网站做h5缓存机制浏览器直接进入网站
  • 网络营销中自建网站国内购物网站案例分析
  • 有没有可以做兼职的网站吗wordpress标题间隔符修改
  • 做网站 公司有哪些陕西建设网综合综合服务中心
  • emlog做企业网站海沧建设网站多少
  • 电子书推送网站怎么做有源代码如何做网站
  • 构建网站无障碍建设河南如何建网站要什么条件
  • 制作展示型网站公司哪家好国内网站域名
  • c access做网站登录页面怎么维护网站教程
  • wordpress网站速度慢网站改版解决方案
  • 铁门关网站建设一套vi设计多少钱
  • 常见的网站首页布局有哪几种站酷网怎么接单赚钱
  • 自适应网站功能前端素材网站
  • 长宁区网站建设设计话色下载168网站
  • 钓鱼网站的类型wordpress修改发布页面插件
  • 百度网站优化是什么意思杭州网站优化体验
  • wordpress站下所有标签wordpress 微信客户端
  • 医疗号网站开发开封开封县网站建设