NOIP 2018模拟赛(数学 打表) 2018 11 3 B组 Day1 T1
程序员文章站
2022-04-02 21:27:31
...
1.傅里叶(fft.c/fft.cpp/fft.pas)
【题目背景】
std最近在基房学到了著名的快速傅里叶变换(FFT)。学校
然而std太弱了,调一道模板题还调了两个小时······
然后,他发现,课后例题第一道他就不会做······
于是他找到了你,请你帮帮他。已经AK了NOIP2018的
【题目描述】
这是一道计算两个正整数乘法的题:
设A=3333···3334(n-1个3),B=3333···3333(m个3)
求A*B。
【输入输出格式】
【输入格式】
输入的第一行有两个正整数n,m。
【输出格式】
输出一行,为A*B。
【输入输出样例】
【输入#1】
1 1
【输出#1】
12
【提示】
共25个测试点,数据有梯度。
对于4%的数据,1<=m,n<=9。
对于32%的数据,1<=m,n<=10^4。
对于另外8%的数据,m=n。
对于100%的数据,1<=m,n<=5*10^6。
算法:数学+打表(一会给你们附上表格)
难度:NOIP T1
代码如下:
#include <cstdio>
#include <iostream>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <algorithm>
#include <queue>
#define ll long long
#define N 105
using namespace std;
int main()
{
freopen("fft.in","r",stdin);
freopen("fft.out","w",stdout);
int n,m;
scanf("%d%d",&n,&m);
if(n==m)
{
for(int i = 1;i <= n;i++)
{
printf("1");
}
for(int i = 1;i <= n;i++)
{
printf("2");
}
}else if(m>n)
{
for(int i = 1;i <= n;i++)
{
printf("1");
}
for(int i = 1;i <= m-n;i++)
{
printf("3");
}
for(int i = 1;i <= n;i++)
{
printf("2");
}
}else if(m<n)
{
for(int i = 1;i <= m;i++)
{
printf("1");
}
for(int i = 1;i <= n-m;i++)
{
printf("0");
}
for(int i = 1;i <= m;i++)
{
printf("2");
}
}
return 0 ;
}
上一篇: [CQOI2007]余数求和(数学)