问题 A: 求近似值
 #include <stdio.h>
#include <time.h>
#include <stdlib.h>
using namespace std; #define ll long long
const ll M = 9e18;
const ll MOD = ;
struct Node {
ll m[][];
}; ll a[]; Node mul(Node a, Node b) {
Node A;
for(int i = ; i < ; ++i) {
for(int j = ; j < ; ++j) {
A.m[i][j] = ;
for(int k = ; k < ; ++k) {
A.m[i][j] = (A.m[i][j] + a.m[i][k] * b.m[k][j] % MOD) % MOD;
}
}
}
return A;
} ll q(Node a, ll num) {
Node AA;
AA.m[][] = AA.m[][] = ;
AA.m[][] = AA.m[][] = ;
while(num) {
if(num & ) AA = mul(AA, a);
a = mul(a, a);
num >>= ;
}
return 2LL * AA.m[][] - ;
}
int main() {
ll n;
int t;
scanf("%d", &t);
while(t--) {
scanf("%lld", &n);
n %= ;
if(n > ) n = *-n-;
if(a[n]){
printf("%lld\n", a[n]);
continue;
}
Node A;
A.m[][] = A.m[][] = ;
A.m[][] = ;
A.m[][] = ;
//printf("%lld\n", q(A, n));
a[n] = q(A, n);
printf("%lld\n", a[n]);
}
return ;
}
超级模法师
  • n % i = n - n / i * i (n / i 表示下取整)
  • 所以所求 = n * m - sum(n/i * i) (i从1到m)
  • 由于,n的第j个因子和第j+1个因子间(左开右闭),的任意数k,有n / k = n / n的第j+1个因子
  • 所以我们用sqrt(n)的时间求出所有n的因子即可,然后相邻的两个用下等差数列求和公式很容易就能算出
  • 求得过程有些坑点需要注意,首先是注意m的大小,m的大小可能位于n的两个因子之间
  • 然后是,求和公式那里也需要先求下余,再算乘法,这样就需要注意因为有个除2,所以要判断用哪一项能整除2,除完后再求余
 #include <iostream>
#include <stdio.h>
#include <cmath>
#define ll long long
using namespace std;
const int N = 1e7;
const ll mod = 1e9+;
ll n , ans = , m , a , b; int main(){
ll tmp = ;
scanf("%lld%lld",&n,&m);
if(m > n){
ans = ((m - n) % mod) * (n % mod) % mod;
m = n;
}
if(m <= N){
for(int i = ; i <= m ; i ++){
ans += (n % i);
} }else{
for(int i = ; ; i ++){
ll x = n / i , y = n / (i + ) + ;
if(y > m){
continue;
}else if(x >= m && y <= m){
ans += (((n % m) + (n % y)) % mod) * ((((m - y + ) % mod) * tmp) % mod) % mod; }else{
ans += (((n % x) + (n % y)) % mod) * ((((x - y + ) % mod) * tmp) % mod) % mod;
}
if(y <= N){
for(int k = ; k < y ; k ++){
ans += (n % k);
}
break;
}
}
}
printf("%lld\n",ans % mod);
}
Combinationaritilize
#include "stdio.h"
#include "stdlib.h"
int main(void)
{
int num;
scanf("%d",&num);
if(num&(num-))
printf("no");
else
printf("yes");
return ;
}
字符串最大表示
 #include <iostream>
#include <stdio.h>
#include <cstring>
using namespace std;
int Next[];
char s[];
int main(){
int T;
scanf("%d",&T);
while(T --){
scanf("%s",s);
int tlen = strlen(s);
int j, k;
j = ; k = -; Next[] = -;
while(j < tlen){
if(k == - || s[j] == s[k])
Next[++j] = ++k;
else
k = Next[k];
} printf("%d\n",tlen / (tlen - Next[tlen]));
}
}
DATE ALIVE

二分图匹配,然后上模版

 #include <iostream>
#include <time.h>
#include <stdio.h>
#include <vector>
#include <string.h>
using namespace std;
const int maxn = *;
int n, x, y, sum;
bool vis[maxn];
int use[maxn];
vector<int> v[maxn];
bool Find(int x){
for(int i = ; i < v[x].size(); ++i){
int xx = v[x][i];
if(!vis[xx]){
vis[xx] = true;
if(!use[xx] || Find(use[xx])){
use[xx] = x;
return true;
}
}
}
return false;
}
int main(){
int n, m, k;
scanf("%d%d%d", &n, &m, &k);
for(int i = ; i < k; ++i){
scanf("%d%d", &x, &y);
v[x].push_back(y+);
}
memset(use, , sizeof(use));
for(int i = ; i <= n; ++i){
memset(vis, false, sizeof(vis));
if(Find(i)) sum ++;
}
printf("%d\n", sum);
for(int i = ; i <= x; ++i){
v[i].clear();
}
//printf("%.3lf\n", (double)clock()/CLOCKS_PER_SEC);
return ;
}
敏感的小明
 #include<bits/stdc++.h>
#include<stdio.h>
using namespace std;
int flag[];
int main(){
memset(flag,,sizeof(flag));
int n;
cin>>n;
int num;
cin>>num;
for(int i=;i<num;i++){
int x;
cin>>x;
flag[x]=;
}
for(int i=n;;i++){
int j=i;
int fg=;
if(flag[j%]==){
fg=;
}else{
do{
int y=j%;
if(flag[y]==){
fg=;
break;
}
j=j/;
}while(j!=);
}
if(fg==){
cout<<i<<endl;
break;
}
}
return ;
}
初中数学
 #include<iostream>
#include<stdio.h>
#include<bits/stdc++.h>
using namespace std;
int a[][];
int main(){
int n,m;
cin>>n>>m;
int cnt=;
for(int i=;i<n+;i++){
for(int j=;j<m+;j++){
cin>>a[i][j];
if(a[i][j]!=){
cnt+=;
}
}
}
for(int i=;i<n+;i++){
for(int j=;j<m+;j++){
if(a[i][j]-a[i-][j]>){
cnt+=a[i][j]-a[i-][j];
}
if(a[i][j]-a[i+][j]>){
cnt+=a[i][j]-a[i+][j];
}
if(a[i][j]>a[i][j-])
cnt+=a[i][j]-a[i][j-];
if(a[i][j]>a[i][j+])
cnt+=a[i][j]-a[i][j+];
}
}
cout<<cnt<<endl; }

2017年江西理工大学C语言程序设计竞赛(高级组)的更多相关文章

  1. 2017年江西理工大学C语言程序设计竞赛(初级组)

    问题 A: Petr的盒子(初) #include <iostream> #include <stdio.h> #include <algorithm> using ...

  2. 2014江西理工大学C语言程序设计竞赛高级组题解

    1001 Beautiful Palindrome Number 枚举回文数字前半部分,然后判断该数字是否满足,复杂度为O(sqrt(n))! 1002 Recovery Sequence  本题的核 ...

  3. 2018年江西理工大学C语言程序设计竞赛(高级组) 三角平方数

    题目描述 三角数:形如图a,圆点摆放成等边三角形的数字,则为三角数. (图a) 平方数:形如图b,小方块摆放成正方形的数字,则为平方数. (图b) 那么如果一个数字既是三角形数又是平方数,则称为三角平 ...

  4. 2018年江西理工大学C语言程序设计竞赛高级组部分题解

    B Interesting paths 考察范围:组合数学 此题是机器人走方格的变种,n*m的网格,从(1,1)走到(n,m),首先可以明确,水平要走m-1格,竖直要走n-1格,则走到目的地的任意一条 ...

  5. 2018年江西理工大学C语言程序设计竞赛(初级组)一

     C语言竞赛初级组第一.二场答案:https://www.cnblogs.com/xingkongyihao/p/10046918.html  A: 逆序对 时间限制: 1 s      内存限制:  ...

  6. 2014江西理工大学C语言程序竞赛高级组

    Beautiful Palindrome Number 题意:求N里面有多少个符合要求的数字(数字要求:回文数,且前一半部分是不严格递增) 解法:打表 #include<bits/stdc++. ...

  7. 2016年江西理工大学C语言程序设计竞赛(高级组)

    问题 A: jxust 解法:争议的问题(是输入整行还是输入字符串),这里倾向输入字符串,然后判断是否含有jxust就行 #include<bits/stdc++.h> using nam ...

  8. 2016年江西理工大学C语言程序设计竞赛(初级组)

    问题 A: 木棒根数 解法:把所有的情况保存下来,加一下就好 #include<bits/stdc++.h> using namespace std; map<char,int> ...

  9. 2015年江西理工大学C语言程序设计竞赛(高级组)

    A 解法:DP+二分 dp[i]=max(dp[i],dp[j]+p[i].v)(i>j) dp[i]表示建立i点之后能够获得的最大值 int n,M; struct node { int l, ...

随机推荐

  1. 4445: [Scoi2015]小凸想跑步 半平面交

    题目大意: http://www.lydsy.com/JudgeOnline/problem.php?id=4445 题解: 设点坐标,利用叉积可以解出当p坐标为\((x_p,y_p)\)时,与边i- ...

  2. 【Google】循环字符串里面的独立子串

    转载自九章算法(地址) 题目: 假设s是一个无限循环的字符串”abcdefghijklmnopqrstuvwxyz”,s就是一个”...zabcdefghijklmnopqrstuvwxyza...” ...

  3. BZOJ1660:[USACO2006NOV]Bad Hair Day

    浅谈栈:https://www.cnblogs.com/AKMer/p/10278222.html 题目传送门:https://lydsy.com/JudgeOnline/problem.php?id ...

  4. SQL SERVER 中的*=和=*

    一.* =和= * 是在sql server2000中左连接,右连接的用法相当于left join 和right join,现在sql2005和2008默认是不支持的,可以设置兼容2000或2008 ...

  5. 配置IIS服务:无法找到该页 您正在搜索的页面可能已经删除、更名或暂时不可用。

    1.配置IIS服务器时,在默认网站创建虚拟目录XXX.然后右击启动页面.aspx,“浏览” 2.  出现错误: 无法找到该页 您正在搜索的页面可能已经删除.更名或暂时不可用. ------------ ...

  6. ML 徒手系列 SVM

    在Lagrange乘子法中,介绍了如何构建及如何使用对偶函数,对目标问题进行求解. 这一章利用L乘子法对SVM进行推导. SVM 即支持向量机,是通过求解超平面进行分类的一种算法.所谓的支持向量,是在 ...

  7. java中的接口和抽象类的区别

    1.接口从用户的角度(使用实现的代码)看问题. 2.接口由编译器强制的一个模块间协作的合约. 3.无成员变量. 4.成员函数只能声明不能实现,(jdk1.8中的default 方法可以有方法体). 接 ...

  8. 问题:OAuth1.0;结果:OAuth1.0协议

    OAuth1.0协议 概要 OAuth提供了一种client代表资源的拥有者访问server的方法,也就是在资源拥有者不向第三方提供证书(通常是指用户名和密码)的情况下,允许第三方使用用户代理重定向访 ...

  9. 同名项目复制,发布新项目,提示已存在该项目于webapp

    来自为知笔记(Wiz)

  10. #410div2D. Mike and distribution

    D. Mike and distribution time limit per test 2 seconds memory limit per test 256 megabytes input sta ...