zoukankan      html  css  js  c++  java
  • bzoj2134 错选单位

    传送门

    题目

    Input

    n很大,为了避免读入耗时太多,
    输入文件只有5个整数参数n, A, B, C, a1,
    由上交的程序产生数列a。
    下面给出pascal/C/C++的读入语句和产生序列的语句(默认从标准输入读入): 
    // for pascal 
    readln(n,A,B,C,q[1]); 
    for i:=2 to n do q[i] := (int64(q[i-1]) * A + B) mod 100000001; 
    for i:=1 to n do q[i] := q[i] mod C + 1; 
     
    // for C/C++ 
    scanf("%d%d%d%d%d",&n,&A,&B,&C,a+1); 
    for (int i=2;i<=n;i++) a[i] = ((long long)a[i-1] * A + B) % 100000001; 
    for (int i=1;i<=n;i++) a[i] = a[i] % C + 1; 
    选手可以通过以上的程序语句得到n和数列a(a的元素类型是32位整数),
    n和a的含义见题目描述。
     2≤n≤10000000, 0≤A,B,C,a1≤100000000

    Output

    输出一个实数,表示gx期望做对的题目个数,保留三位小数。

    分析

    代码

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<string>
    #include<algorithm>
    #include<cctype>
    #include<cmath>
    #include<cstdlib>
    #include<queue>
    #include<ctime>
    #include<vector>
    #include<set>
    #include<map>
    #include<stack>
    using namespace std;
    int a[10000100];
    int main()
    {     int n,A,B,C;
          double ans=0;
          scanf("%d%d%d%d%d",&n,&A,&B,&C,&a[1]); 
          for(int i=2;i<=n;i++)a[i]=((long long)a[i-1]*A+B)%100000001; 
          for(int i=1;i<=n;i++)a[i]=a[i]%C+1; 
          a[n+1]=a[1];
          for(int i=1;i<=n;i++)
             ans+=double(1)/(max(a[i],a[i+1]));
          printf("%0.3lf
    ",ans);
          return 0;
    }
  • 相关阅读:
    mac xcode c++ cin cout注意细节一
    linux c++编译问题和虚拟机网络通信
    cocos2d之列表容器节点再排序
    cocos2d之z轴位置示例
    cocos2d之json使用实例
    绑定方法与非绑定方法
    Python 多态与抽象类
    面向对象
    面向对象之继承与派生
    面向对象之类与对象
  • 原文地址:https://www.cnblogs.com/yzxverygood/p/9197176.html
Copyright © 2011-2022 走看看