问题 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. Nodejs文件相关操作

    欢迎关注我的博客我在马路边 适用人群 本文适用于刚接触Node的小白,毕竟我也是小白,大佬请绕行. Node文件操作 在实际开发中遇到很多有关文件及文件夹的操作,比如创建.删除文件及文件夹,文件拷贝. ...

  2. 【Caffe】Ubuntu 安装 Caffe gpu版

    安装环境:Ubuntu 16.04lts 64位, gcc5.4 gpu1050ti,cuda8.0,cudnn5.1.10 1. 安装依赖库 sudo apt-get install libprot ...

  3. 白话算法(6) 散列表(Hash Table)从理论到实用(中)

    不用链接法,还有别的方法能处理碰撞吗?扪心自问,我不敢问这个问题.链接法如此的自然.直接,以至于我不敢相信还有别的(甚至是更好的)方法.推动科技进步的人,永远是那些敢于问出比外行更天真.更外行的问题, ...

  4. 百度地图设置div样式宽高为百分比不显示地图

    如题,不显示地图只要在样式代码里面加以 position:absolute; 代码就可以了 <style type="text/css"> body, html,#al ...

  5. 【转】 Pro Android学习笔记(七三):HTTP服务(7):AndroidHttpClient

    文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件,转载须注明出处:http://blog.csdn.net/flowingflying/ 不知道此文是否是这个系列中最短的一篇.我们 ...

  6. canvas实现平铺

    代码: /** * Created by Administrator on 2016/1/30. */ function draw(id){ var canvas = document.getElem ...

  7. wpf 可视化树的注意点

    将控件的visibility 设置为collapse时,控件的可视化树并未生成,此时并不能查找到控件内的子控件. 若某控件想对用户不可见,且可以生成可视化树,则需将控件的visibility 设置为h ...

  8. mariadb复制

    实验环境:CentOS7 #安装mariadb-server #主数据库: [root@~ localhost]#vim /etc/my.cnf.d/server.cnf [mysqld] skip_ ...

  9. Java接口定义和实现

    1. 使用interface来定义一个接口.接口定义类似类的定义,分为接口的声明和接口体,其中接口体由常量定义和方法定义两部分组成.定义接口的基本格式如下: [修饰符] interface 接口名 [ ...

  10. OpenXml 2.0 读取Excel

    Excel 单元格中的数据类型包括7种: Boolean.Date.Error.InlineString.Number.SharedString.String 读取源代码: List<strin ...