• BZOJ1258 三角形tri


    三角形tri

    找规律神题……

    发现如果以4结尾,把4改成1、2、3输出就行了。

    如果不以4结尾:

    把结尾改成4输出即可,因为一定与三角形的中心相邻。

    规律1:如果把串的末尾删去,那么会回到上一层。

    如果这个串里只有1种数字,那么它一定在某个角上,只和自己这层的4相邻。

    如果这个串里有2种数字,那么他在某条边上,和某层的4相邻,和自己的中心相邻。

    如果这个串里有3中数字,那么它在大三角形里面,和这层的4,某层的4,另一层的4都相邻。

    于是

    规律2:这个串内有几种不同的数字,就和几个三角形相邻,并且一定以4结尾。

    这还不够,接着找……

    规律3:从后往前扫,第一次出现的数字前的子串+4是个答案不要问我怎么搞出这个规律的

    代码:

    #include<bits/stdc++.h>
    using namespace std;
    const int N=55;
    char s[N];
    int n;
    bool appear[4];
    int main()
    {
    	scanf("%s",s);
    	n=strlen(s)-1;
    	if(s[n]=='4')
    	{
    		for(int i=0;i<n;++i)printf("%c",s[i]);puts("1");
    		for(int i=0;i<n;++i)printf("%c",s[i]);puts("2");
    		for(int i=0;i<n;++i)printf("%c",s[i]);puts("3");
    		return 0;
    	}
    	for(int i=n;i>=1;--i)
    	{
    		int tmp=s[i]-'0';
    		if(!appear[tmp])
    		{
    			for(int j=0;j<i;++j)printf("%c",s[j]);puts("4");
    			appear[tmp]=true;
    		}
    	}
    	return 0;
    } 
    
    路漫漫其修远兮,吾将上下而求索
  • 相关阅读:
    KVM快速构建虚拟机
    工程师测试
    配置SMB,NFS
    Shell脚本基础应用
    Web网页部署
    基础邮件,mariadb数据库
    SElinux,firewalld配置
    Linux管理员测试
    磁盘分区
    配置权限,LDAP
  • 原文地址:https://www.cnblogs.com/zzctommy/p/12350490.html
Copyright © 2020-2023  润新知