分块打表

n ! % p的问题,当n 为10^9的时候,直接遍历会超时,需要打表预处理。

打表程序:

#include<iostream>
#include<cstdio>
#define lon long long
using namespace std;
const int maxn=110;
lon n,p,a[maxn];
int main()
{
    freopen("1.out","w",stdout);lon ans=1;
    for(lon i=0;i<=1000000007;i+=10000000)
    {
        for(lon j=i+1;j<=i+10000000;j++)
        ans=(ans*j)%1000000007;
        cout<<ans<<",";
    }
    return 0;
}


#include<iostream>
#include<cstdio>
#define lon long long
using namespace std;
lon n,p;
lon a[110]={1,682498929,491101308,76479948,723816384,67347853,27368307,
625544428,199888908,888050723,927880474,281863274,661224977,623534362,
970055531,261384175,195888993,66404266,547665832,109838563,933245637,
724691727,368925948,268838846,136026497,112390913,135498044,217544623,
419363534,500780548,668123525,128487469,30977140,522049725,309058615,
386027524,189239124,148528617,940567523,917084264,429277690,996164327,
358655417,568392357,780072518,462639908,275105629,909210595,99199382,
703397904,733333339,97830135,608823837,256141983,141827977,696628828,
637939935,811575797,848924691,131772368,724464507,272814771,326159309,
456152084,903466878,92255682,769795511,373745190,606241871,825871994,
957939114,435887178,852304035,663307737,375297772,217598709,624148346,
671734977,624500515,748510389,203191898,423951674,629786193,672850561,
814362881,823845496,116667533,256473217,627655552,245795606,586445753,
172114298,193781724,778983779,83868974,315103615,965785236,492741665,
377329025,847549272,698611116};
int main()
{
     lon now=n/10000000;
     lon ans=a[now];
     for(lon i=now*10000000+1;i<=n;i++)
     ans=ans*i%p;
     cout<<ans%p;
     return 0;

}


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 Python 中可以使用 xlrd 库来读取 Excel 文件。 下面是一个示例,它展示了如何打开一个 Excel 文件并读取其中的每一行。 ``` import xlrd # 打开 Excel 文件 workbook = xlrd.open_workbook('myfile.xlsx') # 选择第一个工作 worksheet = workbook.sheet_by_index(0) # 遍历所有行 for row_index in range(worksheet.nrows): # 读取每一行的数据 row_data = worksheet.row_values(row_index) # 对数据进行处理 ... ``` 如果要使用分块读取,可以使用 worksheet.row_slice() 方法来读取一个范围内的行。例如,以下代码可以读取第 1 到第 10 行的数据: ``` rows = worksheet.row_slice(start_rowx=0, end_rowx=10) for row in rows: # 对行数据进行处理 ... ``` 此外,也可以使用 worksheet.row() 方法读取单独的行。例如,以下代码可以读取第 5 行的数据: ``` row = worksheet.row(rowx=4) # 对行数据进行处理 ... ``` 希望这些信息能帮到你。 ### 回答2: Python通过使用`pandas`库来分块读取Excel文件。以下是一个简单的示例代码: ```python import pandas as pd # 定义分块大小 chunk_size = 1000 # 读取Excel文件 excel_file = pd.ExcelFile('file.xlsx') # 获取所有Sheet的名称 sheet_names = excel_file.sheet_names # 遍历所有Sheet for sheet_name in sheet_names: # 分块读取Sheet数据 for chunk in pd.read_excel(excel_file, sheet_name=sheet_name, chunksize=chunk_size): # 处理每个分块的数据 # 这里只是简单的打印分块的内容,你可以根据实际需求进行处理 print(chunk) ``` 在上述代码中,首先通过`read_excel`函数读取Excel文件并获取所有Sheet的名称。然后通过`chunksize`参数指定分块大小,将数据分成多个块进行处理。在每个分块内,你可以根据实际需求进行数据处理操作。 注意:在使用上述代码之前,请确保已经安装了`pandas`库。可以通过`pip install pandas`命令进行安装。 ### 回答3: 在Python中,可以使用开源库`pandas`来分块读取Excel文件。下面是实现的步骤: 首先,需要安装pandas库。可以通过在命令行输入`pip install pandas`来安装。 然后,导入pandas库,并使用`read_excel()`函数来读取Excel文件。此函数可以将Excel文件加载到一个DataFrame对象中。 可以设置`chunksize`参数来定义分块的大小。分块大小越小,内存占用越小,但程序执行时间会增加。 接着,可以通过`for`循环迭代DataFrame对象的每个分块,对数据进行处理或分析。 接下来,可以对每个分块进行相应的操作,例如打印分块内容、筛选特定的行列、计算统计指标等。 最后,在迭代完所有分块后,处理程序的其他部分。 以下是一个示例代码,演示如何分块读取Excel文件中的数据: ```python import pandas as pd # 读取Excel文件,指定分块大小为100行 file_path = 'file.xlsx' chunk_size = 100 reader = pd.read_excel(file_path, chunksize=chunk_size) # 迭代每个分块 for chunk in reader: # 对每个分块进行相应操作 # 例如打印分块内容 print(chunk) # 或者分析处理数据 # ... # 其他处理程序的部分 # ... ``` 通过以上方法,我们可以在Python中分块读取Excel文件,从而实现对大规模数据的处理和分析。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值