• 周练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 搜索树判断
  • 相关阅读:
    重新开发四则运算器
    结对编程
    四则运算 个人项目整理
    DAY 012--dict(增、删、改、查、合并)
    001--面向对象 V.S 面向过程
    DAY 011--Tuple使用方法汇总
    001--二分法(Binary search)
    DAY 006--查找某个值是否在列表中(二分法)
    DAY 009--str(替换三种方法)
    DAY 008--str(常见判断条件)
  • 原文地址:https://www.cnblogs.com/bxd123/p/10193411.html
Copyright © 2020-2023  润新知