完全平方数
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 131072K,其他语言262144K
64bit IO Format: %lld

题目描述

多次查询[l,r]范围内的完全平方数个数

定义整数x为完全平方数当且仅当可以找到整数y使得y*y=x

输入描述:

第一行一个数n表示查询次数
之后n行每行两个数l,r

输出描述:

对于每个查询,输出一个数表示答案
示例1

输入

5
1 3
1 4
2 4
4 4
1 1000000000

输出

1
2
1
1
31622

备注:

n <= 100000
0<= l <= r <= 1000000000

直接二分或者sqrt都没事的,我竟然维护错了端点,就是这个0的问题

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5;
ll a[N];
int main()
{
for(int i=;i<N;i++)
a[i]=i*1LL*i;
int T;
scanf("%d",&T);
while(T--)
{
ll l,r,cnt;
cin>>l>>r;
int pos=lower_bound(a,a+N,r)-a;
cnt=pos;
if(a[pos]!=r)cnt--;
pos=lower_bound(a,a+N,l)-a;
cnt-=pos;
if(pos)
{if(a[pos-]!=l)cnt++;}
else cnt++;
cout<<cnt<<endl;
}
return ;
}
比赛
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 131072K,其他语言262144K
64bit IO Format: %lld

题目描述

你在打比赛,这场比赛总共有12个题

对于第i个题,你的队伍有a[i]的几率解决她

如果解决不了她呢?

由于所有人讨论的都很大声

所以你有b[i]的概率从左边那个队那里听会这个题的做法

有c[i]的概率从右边那个队那里听会这个题的做法

请问最终你们队伍解出0-12题的概率分别是多少

输入描述:

第一行12个数表示a[1] -> a[12]
第二行12个数表示b[1] -> b[12]
第三行12个数表示c[1] -> c[12]

输出描述:

输出13行,第i行表示解出i-1题的概率
保留6位小数
示例1

输入

0.20 0.30 0.37 0.40 0.45 0.50 0.57 0.60 0.75 0.76 0.77 0.83
0.85 0.88 0.90 0.94 0.100 0.104 0.105 0.107 0.115 0.120 0.122 0.125
0.128 0.130 0.134 0.140 0.149 0.150 0.152 0.155 0.170 0.183 0.203 0.240

输出

0.000000
0.000000
0.000000
0.000011
0.000160
0.001508
0.009620
0.041938
0.124153
0.243773
0.301960
0.212453
0.064424

这个题目挺好的啊,复习了概率,我发现我这个学的不太行啊

#include<bits/stdc++.h>
using namespace std;
double a[],b[],c[];
double dp[][];
int main()
{
for(int i=;i<=;i++)
cin>>a[i];
for(int i=;i<=;i++)
cin>>b[i];
for(int i=;i<=;i++)
cin>>c[i];
dp[][]=;
for(int i=;i<=;i++)
for(int j=;j<=;j++)
{
dp[i][j]=dp[i-][j]*(.-a[i]-(.-a[i])*(b[i]+c[i]-b[i]*c[i]));
if(j)dp[i][j]+=dp[i-][j-]*(a[i]+(.-a[i])*(b[i]+c[i]-b[i]*c[i]));
}
for(int i=;i<=;i++)
{
if(dp[][i]<)printf("0.000000\n");
else printf("%.6f\n",dp[][i]);
}
return ;
}
逆序对
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 131072K,其他语言262144K
64bit IO Format: %lld

题目描述

求所有长度为n的01串中满足如下条件的二元组个数:
设第i位和第j位分别位ai和aj(i<j),则ai=1,aj=0。
答案对1e9+7取模。

输入描述:

输入一个n。

输出描述:

输出答案对1e9+7取模
示例1

输入

3

输出

6

说明

 

备注:

 n <= 1018

我写了暴力,得到的这个字符串0 0  1 6 13啥的,找到了答案是n*(n+1)*2^(n-2,可是我的代码爆了ll啊,奇妙用了int128过的,之后我看到我没有及时取模

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll MD=1e9+;
ll n;
ll poww(ll x, ll n)
{
ll ans=;
while(n)
{
if(n&)ans=ans*x%MD;
x=x*x%MD;
n>>=;
}
return ans;
}
int main()
{
while(cin>>n)
{
n--;
if(n<=)printf("");
else if(n==)printf("");
else
cout<<poww(,n-)*(n%MD)%MD*((n+)%MD)%MD;
}
return ;
}
双拆分数
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 131072K,其他语言262144K
Special Judge, 64bit IO Format: %lld

题目描述

对于一个数字串 s,若能找到一种将其分成左右两个非空部分 s1,s2 的方案,使得:
    1、s1,s2 均无前导零

    2、存在两个正整数 a,b,使得 b 整除 a,且 a/b=s1, a*b=s2
那么我们记这是一个合法的分法。特别地,如果一个串有两个或更多个不同的合法的分法,那么我们称这个数字串是双拆分数字串。
给定一个 n,要求构造一个长度恰为 n 的双拆分数字串。如果无解,输出 -1。

输入描述:

输入仅一行一个正整数 n(1 <= n <= 300)。

输出描述:

仅一行一个数字串或者 -1。
示例1

输入

8

输出

24419764

构造题,这个人想的这个特殊值好牛逼啊,佩服,我这种lowbi只能找到输出-1的

#include <cstdio>
int main()
{
int n;
scanf("%d",&n);
if(n<=) puts("-1");
else
{
if(!(n&))printf(""),n-=;
else printf(""),n-=;
while(n--) printf("");
}
return ;
}

最新文章

  1. 老学员的学习感悟 --prince2认证有什么用
  2. tomcat启动异常(严重: Dispatcher initialization failed Unable to load configuration. - [unknown location] )
  3. html5开发制作,漂亮html5模板欣赏,H5网站建设
  4. 微信公众平台应用开发:方法、技巧与案例--柳峰,Java语言版本
  5. Linux 命令之 grep
  6. 初识IOS
  7. SoapUI中Groovy的实用方法
  8. IPC$命令详解
  9. spring事务失效情况分析
  10. C# Main函数详解
  11. 【java学习笔记】线程
  12. js实现数组去重的几种方法
  13. 最完整的mac安装caffe
  14. 洛谷P4720 【模板】扩展卢卡斯
  15. LED音乐频谱之输入数据处理
  16. CentOS工作内容(二)关闭SELinux
  17. js判断图片是否加载完毕
  18. User-Agent大全
  19. angularJS 中的传参
  20. jmap -histo pid 输出的[C [B [I [S methodKlass的含义

热门文章

  1. 洛谷 P2868 [USACO07DEC]观光奶牛Sightseeing Cows
  2. BZOJ 3232: 圈地游戏 分数规划+判负环
  3. GPnP profile内容
  4. javaweb基础(8)_HttpServletResponse生成验证码
  5. 遍历Map的两种方式
  6. Vue和MVVM对应关系
  7. ubuntu 16.04 + 中文输入法
  8. 转 fine-tuning (微调)
  9. 【模板】无旋Treap(FHQ)
  10. percona-toolkit工具使用介绍