41、环(环类的问题都要重新看!)
#include <iostream>
#include <math.h>
#include <bits/stdc++.h>
using namespace std;
int main(){
int n;
int a[9]={0};
int b[9]={0};
int sum1,sum2,sum;
while(cin>>n){
getchar();
for(int i=0;i<9;i++)
cin>>a[i];
sum=0;
sum1=0;
sum2=0;
for(int j=0;j<9;j++){
for(int k=0;k<9;k++){
b[k]=a[(k+j)%9];
}
for(int r=0;r<9;r++)
sum1+=b[r]*f(8-r);
for(int s=8;s>=0;s--)
sum2+=b[s]*f(s);
int jueduizhi=abs(sum1-sum2);
if(jueduizhi%396==0)
sum++;
}
cout<<sum<<endl;
}
return 0;
}
int f(int num){
int c=1;
int d;
for(d=1;d<=num;d++)
c*=10;
return c;
}
42、求数列项
#include <iostream>
using namespace std;
int main(){
int n,sum;
int a[50]={0};
while(cin>>n){
sum=0;
if(n==1)
cout<<"1"<<endl;
else if(n==2)
cout<<"5"<<endl;
else{
sum=5;
for(int i=n;i>2;i--){
a[i]=(i-3)*3+7;
sum+=a[i];
}
cout<<sum<<endl;
}
}
return 0;
}
43、最高频率(思想,有技巧,多思)
#include <stdio.h>
int main() {
int n,i,a[205],b[110],index,max;
while(scanf("%d",&n) != EOF) {
//初始化
for(i=1;i<=109;i++)
b[i]=0;
//输入数据 计数
for(i=1;i<=n;i++) {
scanf("%d",&a[i]);
b[a[i]]++; //输入数据作为下标,输入一次+1(技巧)
}
index=0,max=0;
//查找出现次数最多值
for(i=1;i<110;i++) {
if(b[i]>max) {
max = b[i];
index=i;
}
}
printf("%d\n",index);
}
return 0;
}
44、三艘船(break使用?)
45、回文数
#include <iostream>
using namespace std;
int Ishuiwen(int n){
int stack[6]={0};
int top=-1;
int k=0,temp=0;
while(n>0){
k=n%10;
stack[++top]=k;
n=n/10;
}
temp=top;
for(int i=0,j=temp;i<temp/2,j>temp/2;i++,j--){
if(stack[i]!=stack[j])
return 0;
}
return 1;
}
int reverse(int n){
int a[6]={0};
int i=0,r=0,j=0,sum=0;
while(n>0){
r=n%10;
a[i++]=r;
n=n/10;
}
for(j=0;j<i;j++){
sum=a[j]+sum*10;
}
return sum;
}
int main() {
int m,n,sum;
while(cin>>n){
if(n==0)
break;
while(1){
m=reverse(n);
sum=m+n;
cout<<n<<"+"<<m<<"="<<sum<<endl;
if(Ishuiwen(sum)==1)
break;
else
n=sum; //要记得处理下,否则死循环
}
}
return 0;
}
46、特殊四位数
#include <iostream>
using namespace std;
int fun2(int n){
int a[4];
int i=0;
while(n>0){
a[i++]=n%10;
n=n/10;
}
if((a[1]+a[3])==(a[0]*a[2]))
return 1;
else
return 0;
}
int fun1(int n){
for(int i=1;i<n;i++){
if(i*i==n&&fun2(n)==1){
return 1;
break;
}
}
return 0;
}
int main(){
int num;
int b[10000];
int j=0;
while(cin>>num){
for(int i=1156;i<10000;i++){
if(fun1(i)==1)
b[++j]=i;
}
cout<<b[num]<<endl;
}
return 0;
}
47、最大值(没想出来)
48、数列1
#include<stdio.h>
int main()
{
int n,i,j,k,a[60]={0},count=0,num=0;
while((scanf("%d",&n))!=EOF)
{
count=0;
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n;i++)//循环更换每个起点
{
for(j=1;i+j<=n;j++)//循环更换每次选数个数s
{
num=0;
for(k=0;k<j;k++)//遍历相加
{
num+=a[i+k];
}
if(num%11==0)
count++;
}
}
printf("%d\n",count);
}
return 0;
}
49、修理牛棚(暂时不会处理)
50、按要求输出序列
#include <iostream>
using namespace std;
int main(){
int m,n;
int a[200]={0};
while(cin>>n){
for(int k=0;k<110;k++){
a[k]=0;
}
for(int i=0;i<n;i++){
cin>>m;
a[m]++;
}
int flag=0;
for(int j=0;j<110;j++){
if(a[j]!=0){
if(flag==0){
cout<<j;
flag=1;
}else
cout<<" "<<j;
}
}
cout<<endl;
}
return 0;
}