1. 程式人生 > >NOIP 2018模擬賽(數學 打表) 2018 11 3 B組 Day1 T1

NOIP 2018模擬賽(數學 打表) 2018 11 3 B組 Day1 T1

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