• cf472A Design Tutorial: Learn from Math


    A. Design Tutorial: Learn from Math
    time limit per test
    1 second
    memory limit per test
    256 megabytes
    input
    standard input
    output
    standard output

    One way to create a task is to learn from math. You can generate some random math statement or modify some theorems to get something new and build a new task from that.

    For example, there is a statement called the "Goldbach's conjecture". It says: "each even number no less than four can be expressed as the sum of two primes". Let's modify it. How about a statement like that: "each integer no less than 12 can be expressed as the sum of two composite numbers." Not like the Goldbach's conjecture, I can prove this theorem.

    You are given an integer n no less than 12, express it as a sum of two composite numbers.

    Input

    The only line contains an integer n (12 ≤ n ≤ 106).

    Output

    Output two composite integers x and y (1 < x, y < n) such that x + y = n. If there are multiple solutions, you can output any of them.

    Sample test(s)
    input
    12
    
    output
    4 8
    
    input
    15
    
    output
    6 9
    
    input
    23
    
    output
    8 15
    
    input
    1000000
    
    output
    500000 500000
    
    Note

    In the first example, 12 = 4 + 8 and both 4, 8 are composite numbers. You can output "6 6" or "8 4" as well.

    In the second example, 15 = 6 + 9. Note that you can't output "1 14" because 1 is not a composite number.

    给定n,要求找出a,b,使得a、b是合数,并且n=a+b

    3分钟打完……感觉手速还是慢

    #include<cstdio>
    #include<iostream>
    #include<cstring>
    #include<cstdlib>
    #include<algorithm>
    #include<cmath>
    #include<queue>
    #include<deque>
    #include<set>
    #include<map>
    #include<ctime>
    #define LL long long
    #define inf 0x7ffffff
    #define pa pair<int,int>
    using namespace std;
    inline LL read()
    {
        LL x=0,f=1;char ch=getchar();
        while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
        while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
        return x*f;
    }
    LL n;
    LL a[100010];
    bool mark[1000010];
    int main()
    {
    	n=read();
    	memset(mark,1,sizeof(mark));
    	mark[1]=0;
    	for (int i=2;i<=n;i++)
    	  if (mark[i])
    	    for (int j=2*i;j<=n;j+=i)
    	      mark[j]=0;
    	for (int i=2;i<=n;i++)
    	  if (!mark[i]&&!mark[n-i]&&i<n-i)
    	  {
    	  	printf("%d %d
    ",i,n-i);
    	  	return 0;
    	  }
    }
    

      

    ——by zhber,转载请注明来源
  • 相关阅读:
    【JS】事件传播
    【JS】鼠标跟随
    【JS】使用JS实现回到顶部按钮功能
    【JS】DOM获取元素方法
    【JS】DOM操作元素
    【JS】实现全选功能
    【JS】定时器的开启与关闭
    【JS】动态渲染页面
    【JS】标签页切换
    Elasticsearch(ES)简介
  • 原文地址:https://www.cnblogs.com/zhber/p/4035897.html
Copyright © 2020-2023  润新知