问题 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. sqlite表结构动态读取工具(Chole ORM框架)

    Chole ORM框架 sqlIte于嵌入式数据库读取比较有利,不需要安装office也可以进行,可以在服务器系统当中使用. 所以我开发了这款工具,然后就是为了动态的读取表结构,然后根据表结构加载所有 ...

  2. noip寻找道路

    题目描述 在有向图G 中,每条边的长度均为1 ,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 1 .路径上的所有点的出边所指向的点都直接或间接与终点连通. 2 .在满足条 ...

  3. RTSP协议分析(二)

    以下是某省IPTV的RTSP协商过程: DESCRIBE rtsp://118.122.89.27:554/live/ch10083121594790060557.sdp?playtype=1& ...

  4. Django-进阶 分页,中间件

    知识预览 分页 中间件 回到顶部 分页 Django的分页器(paginator) view from django.shortcuts import render,HttpResponse # Cr ...

  5. Starting MySQL....The server quit without updating PID file错误解决办法

    出现错误:Starting MySQL....The server quit without updating PID file 检查错误文件: /var/lib/mysql/xxxx.err,根据其 ...

  6. C语言学习笔记--C语言中的逗号表达式

    逗号表达式:exp1,exp2,epx3,...,expN; (1)逗号表达式是 C 语言中的“粘贴剂” (2)逗号表达式用于将多个子表达式连接为一个表达式 (3)逗号表达式的值为最后一个子表达式的值 ...

  7. 2、java 启动参数

    1.java启动参数共分为三类: 其一是标准参数 (-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容:其二是非标准参数 (-X),默认jvm实现这些参数的功能,但是并不保证所有jvm实现都 ...

  8. Entity Framework Code-First(2):What is Code-First?

    What is Code-First?: Entity Framework introduced Code-First approach from Entity Framework 4.1. Code ...

  9. 19. CTF综合靶机渗透(十二)

    靶机说明: 靶机主题来自美剧<黑客军团> 本次靶机有三个flag,难度在初级到中级,非常适合新手训练学习,不需要逆向技术,目标就是找到三个key,并且拿到主机root权限. 渗透过程: 本 ...

  10. jquery.pagination.js数据无刷新真分页

    定义一个全局的分页加载变量,并设置为true: var __isReSearch=true; 定义分页的一些数据: var __PageSize = 10; var __SearchCondition ...