• 周练7


    7-61 打印沙漏 

    很强的对称性原理  如果内部基于第一个循环 将第一个循环反过来

    #include <bits/stdc++.h>
    
    using namespace std;
    
    
    int aaa(int n);
    int main()
    {
    
    
    int n;char x;
    cin>>n>>x;
    int t=(n-1)/2;
    int left=n-1-(  (3+aaa(t))*((aaa(t)-3)/2+1)      );
    
    int q=aaa(t);
    
     if(q==1) {printf("%c",x);printf("
    %d",left);return 0;}
    else {
    
    for(int i=1;i<=q/2+1;i++)
    {
         for(int s=1;s<i;s++)printf(" ");
    
        for(int j=q;j>=(i-1)*2+1;j--) printf("%c",x);
    
        printf("
    ");
    
    }
    
    for(int i=q/2;i>=1;i--)
    {
         for(int s=1;s<i;s++)printf(" ");
    
        for(int j=q;j>=(i-1)*2+1;j--) printf("%c",x);
    
       if(i!=1)  printf("
    ");
    
    }
    
    printf("
    %d",left);
    
    
    }
    
    
    return 0;
    }
    
    
    
    int aaa(int n)
    {
        for(int i=3;;i++,i++)                                                                                                                                                                 
        {
            if( ((3+i)*((i-3)/2+1)/2)>n )return i-2;
    
        }
    
    }
    View Code

    清晰的思路

    #include<iostream>
    
    #include<cmath>
    using namespace std;
    int main()
    {
    int k=0,i,j,n;
    char c;
    cin>>n>>c;
    while(1)
    {
    if((2*pow(k+1,2)-1)>n)
    break;
    else k++;
    }
    for(i=k-1;i>0;i--)
    {
    for(j=1;j<=(k-1-i);j++)
    cout<<" ";
    for(j=1;j<=(2*i+1);j++)
    cout<<c;
    cout<<endl;
    }
    for(i=0;i<=k-1;i++)
    {
    for(j=1;j<=(k-1-i);j++)
    cout<<" ";
    for(j=1;j<=(2*i+1);j++)
    cout<<c;
    cout<<endl;
    }
    //cout<<k-1<<endl;
    cout<<(n-2*pow(k,2)+1)<<endl;
    return 0;
    }
    View Code

     7-65 连续因子

     数学 枚举

    #include <bits/stdc++.h>
    
    using namespace std;
    
    
    
    int main()
    {
    int n;cin>>n;
    
    int max1=0,flag=2;
    for(int i=2;i<=sqrt(n);i++)
    {
        int j=1;
        for(int k=i;j*k<=n;k++)
        {   j*=k;
            if(n%j==0&&(k-i+1)>max1){max1=k-i+1;flag=i;}
            else if(n%j!=0){break;}
    
        }
    
    
    
    }
    
    if(max1==0)printf("1
    %d",n);
    else
    {
    
    
    
    printf("%d
    ",max1);
    
    for(int i=flag;i<=flag+max1-1;i++)
    {
        if(i==flag)printf("%d",i);
        else printf("*%d",i);
    
    }
    
    
    
    }
    
    
    return 0;
    }
    View Code

    7-68 城市间紧急救援

    7-69 链表去重 

    7-70 搜索树判断
  • 相关阅读:
    关闭弹出窗体,刷新父页面
    Oracle 导出部分表结构,以及导入
    ORCLE报错解决(ora01747:无效的用户.表.列,表.列)
    PL/SQL Developer使用技巧
    自定义table
    Array查询数组中是否包含指定字符
    水晶报表去掉多余小数点
    HttpHandler HttpModule入门篇
    窗口类名无效 错误 解决方法
    2020.10.15
  • 原文地址:https://www.cnblogs.com/bxd123/p/10193411.html
Copyright © 2020-2023  润新知