目录
L1-002 打印沙漏
先判断层数,对半处理
#include<cstdio>
char map[10][10];
int main(){
int n;char c;
while(~scanf("%d %c",&n,&c)){
int i,cnt=1,num=1;
for(i=3;;i+=2){
if(num+2*i>n) break;
num+=2*i;
cnt++;
}
i-=2;
int res=n-num;
//printf("%d\n",num);
//printf("%d--%d\n",i,cnt);
for(int j=0;j<cnt;j++){
int cmp=j;
while(cmp--) printf(" ");
for(int k=0;k<i-2*j;k++){
printf("%c",c);
}
printf("\n");
}
for(int j=cnt-2;j>=0;j--){
int cmp=j;
while(cmp--) printf(" ");
for(int k=0;k<i-2*j;k++){
printf("%c",c);
}
printf("\n");
}
printf("%d\n",res);
}
return 0;
}
L1-003 个位数统计
map使用
#include<cstdio>
#include<cstring>
#include<map>
#include<iostream>
using namespace std;
map<char,int>v;
int main(){
char s[1005];
cin.getline(s,1005);
for(int i=0;i<strlen(s);i++)
v[s[i]]++;
map<char,int>::iterator it;
for(it=v.begin();it!=v.end();it++){
printf("%c:%d\n",it->first,it->second);
}
return 0;
}
L1-006 连续因子
暴力求
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
typedef long long ll;
int main(){
int n;
while(~scanf("%d",&n)){
int len=0,st=0;
for(int i=2;i<=(int)sqrt(n);i++){
ll tmp=1;
for(int j=i;j*tmp<=n;j++){
tmp*=j;
if(n%tmp==0&&j-i+1>len){
st=i;
len=j-i+1;
}
}
}
if(st==0) st=n,len=1;
printf("%d\n%d",len,st);
for(int i=st+1;i<st+len;i++)
printf("*%d",i);
printf("\n");
}
return 0;
}