网站设计宁波wordpress文章无法访问
网站设计宁波,wordpress文章无法访问,软件开发的流程是什么,wordpress是php吗正题
链接 需要纪中OJ账号 刚开始一个字符串”1”。然后进行无数次变化#xff0c;1变为10,0变为1。然后求多个区间内的1的个数 输入输出#xff08;需要自取#xff09; Input 第一行为一个整数Q#xff0c;后面有Q行#xff0c;每行两个数用空格隔开的整数a, b。 …正题
链接 需要纪中OJ账号 刚开始一个字符串”1”。然后进行无数次变化1变为10,0变为1。然后求多个区间内的1的个数 输入输出需要自取 Input 第一行为一个整数Q后面有Q行每行两个数用空格隔开的整数a, b。 Output 共Q行每行一个回答 Sample Input 1 2 8 Sample Output 4 解题思路
先编一个输出序列的程序分析一下题目可以发现以下结果 1 10 101 10110 10110101 1011010110110 101101011011010110101 1011010110110101101011011010110110 … 然后会愉快的发现 “1011010110110101101011011010110110” “101101011011010110101”“1011010110110” 于是就想到的斐波那契数可是数据范围有毒导致无法直接运算字符串。所以储存长度和1的个数就好了字符串累加那么这两个也是累加上去的。然后求出1到b的1的数量减去1到a-1的1的数量就好了。接下来就是区间计算问题了 代码
#includecstdio
#includecstring
#includeiostream
#define ull unsigned long long
using namespace std;
ull s;
ull a,b,num[151],f[151];
char read[100];
int n;
ull ask(ull right)//询问1到right
{ull ans0;int find0;while (right){find1;while (num[find]right) find;find--;//找一个比它小的最接近的区间right-num[find];//减去那个区间的长度ansf[find];//加上那个区间的值}return ans;
}
int main()
{scanf(%d,n);f[1]1;num[1]1;f[2]1;num[2]2;for (int i3;i100;i){f[i]f[i-1]f[i-2];num[i]num[i-1]num[i-2];}//计算斐波那契数for (int i1;in;i){a0;b0;scanf(%s,read);int lstrlen(read);for (int i0;il;i) aa*10read[i]-48;scanf(%s,read);lstrlen(read);for (int i0;il;i) bb*10read[i]-48;//读入coutask(b)-ask(a-1)endl;//输出}
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/89259.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!