欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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 ;
}

 

相关标签: 数学