新普金娱乐网址


火速代码之按位操作(二)数学

《谈谈方法》~认识和判断的方法论数学

JavaScript 基础结构数学

  • 二月 13, 2019
  • 数学
  • 没有评论

标题叙述

已知多项式方程:

a0+a1x+a2x^2+..+anx^n=0

求那些方程在[1, m ] 内的整数解(n 和m 均为正整数)

 

输入输出格式

输入格式:

 

输入文件名为equation .in。

输入共n + 2 行。

首先行包涵2 个整数n 、m ,每多个整数之间用一个空格隔开。

接下去的n+1 行每行包涵一个整数,依次为a0,a1,a2..an

 

出口格式:

 

输出文件名为equation .out 。

第一行输出方程在[1, m ] 内的整数解的个数。

接下去每行一个整数,根据从小到大的逐条依次输出方程在[1, m ]
内的一个整数解。

 

  • 注释

输入输出样例

输入样例#1: 复制

2 10 
1
-2
1

输出样例#1: 复制

1
1

输入样例#2: 复制

2 10
2
-3
1

输出样例#2: 复制

2
1
2

输入样例#3: 复制

2 10 
1  
3  
2  

输出样例#3: 复制

0

   
 代码注释可以运用//可能/* */

说明

对于30%的数据:0<n<=2,|ai|<=100,an!=0,m<100

对于50%的数据:0<n<=100,|ai|<=10^100,an!=0,m<100

对于70%的数据:0<n<=100,|ai|<=10^10000,an!=0,m<10000

对于100%的数据:0<n<=100,|ai|<=10^10000,an!=0,m<1000000

 

题解:

  考试的时候取模数选的多还大无语了,然后总认为不对。

  后来看了题解发现,作者那样被严重卡常数。

  只要求取多少个较小的模数,然后将式子左边取模,然后讲1-p(表示模数)

  各种模仿两遍就是pn复杂度,然后看哪几个不为0,表明相对不行,那么其倍数

  也丰裕,多选多少个模数就足以了。

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<cmath>
 4 #include<iostream>
 5 #include<algorithm>
 6 
 7 const int N=101;
 8 const int L=10010;
 9 const int M=1000010;
10 const int TOT=4;
11 
12 int n,m,ans;
13 int p[TOT+1],a[N],len[N];
14 bool flg[M];
15 char s[N][L];
16 
17 void make_list()
18 {
19     p[1]=22349;
20     p[2]=22367;
21     p[3]=22369;
22     p[4]=17389;
23 }
24 int main()
25 {
26     make_list();
27     scanf("%d%d",&n,&m);
28     for(int i=0;i<=n;i++)
29         scanf("%s",s[i]);
30     for(int i=0;i<=n;i++)
31         len[i]=strlen(s[i]);
32     for(int i=1;i<=TOT;i++)
33     {
34         for(int j=0;j<=n;j++)
35         {
36             int flag=(s[j][0]=='-'?1:0);
37             a[j]=0;
38             for(int k=flag;k<len[j];k++)
39                 a[j]=(a[j]*10+s[j][k]-'0')%p[i];
40             if(flag) a[j]=-a[j];
41         }//每个系数先取模 
42         for(int j=1;j<=p[i];j++)
43         {
44             int tmp=0;
45             for(int k=n;k>=0;k--)
46                 tmp=(tmp*j+a[k])%p[i];
47             if(tmp)//表示不行 
48             for(int k=0;j+k*p[i]<=m;k++)
49                 flg[j+k*p[i]]=1;//其倍数也不行 
50         }
51     }
52     for(int i=1;i<=m;i++)
53         if(!flg[i]) ans++;
54     printf("%d\n",ans);
55     for(int i=1;i<=m;i++)
56         if(!flg[i]) printf("%d\n",i);
57 }

 

// 这是一个单行注释
/*
* 这是
* 一个
* 多行
* 注释
*/

 

  • 变量

   
 变量用于存储数据,在平等功用域内变量不得重名,定义语法:var
userName;

var test = 1;
var test2 = function() { ... };
var test3 = test2( test );

关键字

  • var

    • 赋值

     userName = “name”;

    • 生命周期

   
 函数中宣示的变量只能够在函数中调用,称之为局地变量,只在函数运行期间占据内存资源。而在函数外讲明的变量可以被网页中的所有函数访问,整个生命周期从变量注脚开始到网页关闭截止。

 

  • 标识符

 
  标识符是用来给变量和函数命名的一个唯一名称,这样以有益他们得以在紧接着的代码中被引述。

取名规则

  • 无法是保留字
  • 只可以是字母、数字、下划线和$符号
  • 第三个字符不或者是数字

 

  • CDATA

   
 CDATA部分用以告诉浏览器该内容不是标志,并且不该作为标记处理,语法:<![CDATA[……]]>。

 

  • 停放对象
    • 字符串对象

   
 字符串对象能够用于拍卖文本字符串,使用该内置对象时索要创制该目标的一个实例,语法:new
String(‘……’);

    • 日期对象

   
 日期对象用于扶持处理日期和岁月,语法:new Date();

    • 数学对象

   
 数学对象用于扶持处理数值,语法:Math

    • 数组对象

   
 数组看似于卓越的变量,它的卓殊规在于可以保留几个值,并且可以独立访问这么些值。语法:new
Array(count);

    • 窗口对象

   
 每一种浏览器窗口和框架都对应于一个窗口对象,它是陪伴着<body>或<frameset>成分的每一种实例一起创设的靶子。

 

  • 保留字

   
JavaScript中有少量的保留字,这几个保留字是用户没办法用来自定义变量和函数注解的。

  • break
  • case
  • catch
  • class
  • const
  • continue
  • debugger
  • default
  • delete
  • do
  • else
  • enum
  • export
  • extends
  • false
  • finally
  • for
  • function
  • if
  • implements
  • import
  • in
  • instanceof
  • interface
  • let
  • new
  • null
  • package
  • private
  • protected
  • public
  • return
  • static
  • super
  • switch
  • this
  • throw
  • true
  • try
  • typeof
  • var
  • void
  • while
  • with
  • yield

相关文章

No Comments, Be The First!
近期评论
    分类目录
    功能
    网站地图xml地图