#include <bits/stdc++.h>
using namespace std;
int main()
{
int n,t,count;
while(cin>>n)
{
for(int k=0;k<n;k++)
{
count=0;
t=0;
int x[20];
for(int i=0;i<20;i++)
x[i]=0;
for(int i=0;i<20;i++)
{
cin>>x[i];
if(x[i]==0)
break;
t++;
}
for(int i=0;i<t;i++)
{
for(int j=0;j<t;j++)
{
if(x[j]==2*x[i])
count++;
}
}
cout<<count<<endl;
}
}
return 0;
}
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
while(cin>>n)
{
if(n==0)
break;
int x[n+1];
for(int i=0;i<n;i++)
{
cin>>x[i];
}
for(int i1=0;i1<n-5;i1++)
{
for(int i2=i1+1;i2<n-4;i2++)
{
for(int i3=i2+1;i3<n-3;i3++)
{
for(int i4=i3+1;i4<n-2;i4++)
{
for(int i5=i4+1;i5<n-1;i5++)
{
for(int i6=i5+1;i6<n;i6++)
{
cout<<x[i1]<<" "<<x[i2]<<" "<<x[i3]<<" "<<x[i4]<<" "<<x[i5]<<" "<<x[i6]<<endl;
}
}
}
}
}
}
}
return 0;
}
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
while(cin>>n)
{
for(int i=n+1;i<1000;i++)
{
if(i<10)
{
printf("00%d\n",i);
}
else if(i<100)
{
printf("0%d\n",i);
}
else
printf("%d\n",i);
}
}
return 0;
}
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n,k,count;
while(cin>>n)
{
getchar();
for(int i=0;i<n;i++)
{
count=0;
char str[100];
gets(str);
k=strlen(str);
for(int j=0;j<k;j++)
{
if(str[j]>=48&&str[j]<=57)
count++;
}
printf("%d\n",count);
}
}
return 0;
}
思路:先把1给x【1】,然后分别走4条路,每条路分别是从以x【1】开始的丑数*2,*3,*5,*7;4条路每走一步,都比较出4个中的最小值,并以这个最小值为下一个丑数,同时得出这个最小值的那一条路(不一定是一条),它下一步的x【】的下标应该向后移动一位,才可以去找接下来可能是最小值的丑数!!!
#include <bits/stdc++.h>
#define min4(a,b,c,d) min(min(a,b),min(c,d))
using namespace std;
int main()
{
int n,t2,t3,t5,t7,x[5850];
x[1]=1;
t2=t3=t5=t7=1;
for(int i=2;i<=5842;i++)
{
x[i]=min4(x[t2]*2,x[t3]*3,x[t5]*5,x[t7]*7);
if(x[i]%2==0) t2++;
if(x[i]%3==0) t3++;
if(x[i]%5==0) t5++;
if(x[i]%7==0) t7++;
}
while(cin>>n)
{
if(n==0)
break;
else
{
printf("%d\n",x[n]);
}
}
return 0;
}
#include <bits/stdc++.h>
using namespace std;
struct jx
{
int xmin,xmax,ymin,ymax;
}ch[1000];
int main()
{
int n,count;
while(cin>>n)
{
for(int i=1;i<=n;i++)
{
cin>>ch[i].xmin>>ch[i].xmax>>ch[i].ymin>>ch[i].ymax;
}
count=0;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(j!=i)
{
if(ch[i].xmin<=ch[j].xmin&&ch[i].xmax>=ch[j].xmax&&ch[i].ymin<=ch[j].ymin&&ch[i].ymax>=ch[j].ymax)
{
count++;
break;
}
}
}
}
cout<<count<<endl;
}
return 0;
}
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n,num,flag=0;
cin>>n;
int x[101];
for(int i=1;i<=n;i++)
cin>>x[i];
cin>>num;
for(int i=1;i<=n;i++)
{
if(x[i]==num)
{
flag=1;
printf("%d\n",i);
break;
}
}
if(flag==0)
printf("0\n");
return 0;
}
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n,count=0,count1,count2;
cin>>n;
int x[1001];
for(int i=1;i<=n;i++)
cin>>x[i];
for(int i=1;i<=n;i++)
{
count1=count2=0;
for(int j=1;j<i;j++)
{
if(x[j]>x[i])
count1++;
}
for(int k=n;k>i;k--)
{
if(x[k]>x[i])
count2++;
}
if(count1==count2)
count++;
}
printf("%d\n",count);
return 0;
}
#include <bits/stdc++.h>
using namespace std;
int main()
{
int m,t,count=0,r;
int a,b;
cin>>m>>t;
for(int i=1;i<=m;i++)
{
a=i;
do
{
b=a%10;
if(b==t)
{
count++;
break;
}
a=a/10;
}while(a!=0);
}
r=m-count;
cout<<r<<endl;
return 0;
}
#include <bits/stdc++.h>
using namespace std;
int huzhi(int a,int b)
{
int i,flag=0;
for(i=2;i<=a;i++)
{
if(a%i==0&&b%i==0)
{
flag=1;
break;
}
}
if(flag==0)
return 1;
else
return 0;
}
int main()
{
int a,b,l;
int m,n;
double cha,min;
cin>>a>>b>>l;
min=10000;
for(int i=l;i>0;i--)
{
for(int j=1;j<=l;j++)
{
if(huzhi(i,j)==1)
{
cha=1.0*i/j-1.0*a/b;
if(cha>=0&&cha<min)
{
min=cha;
m=i;
n=j;
}
}
}
}
printf("%d %d\n",m,n);
return 0;
}
思路:找出每一个O前面有多少个C,后面又多少个W,两个数相乘,既是由该O组成的COW的个数,所有个数相加即的出结果
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
long long count=0,c[100001],w[100001],t1,t2;
cin>>n;
char x[100001];
for(int i=1;i<=n;i++)
cin>>x[i];
t1=t2=count=0;
for(int i=1;i<=n;i++)
{
if(x[i]=='C') t1++;
c[i]=t1;
}
for(int i=n;i>0;i--)
{
if(x[i]=='W') t2++;
w[i]=t2;
}
for(int i=1;i<=n;i++)
{
if(x[i]=='O')
count+=c[i]*w[i];
}
printf("%lld\n",count);
return 0;
}
另一种方法
先定义三个变量C,CO,COW,从头到尾遍历一遍,遇见C就C++,遇见O把C+CO赋值给CO,遇见W,把CO+COW赋值给COW,走一遍后,COW的值就是结果!!!
思路:变量C一直在记录符号C出现的次数,当出现一次O就相当于一次断点,此时CO记录了由该符号O和其前面的C所组成的CO的个数,当再遇到O的时候就累加,遇到W时同理,且记录的就是COW的个数了!!!
#include <bits/stdc++.h>
using namespace std;
int main()
{
char x[100010];
int n;
long long C,CO,COW;
C=CO=COW=0;
cin>>n;
getchar();
for(int i=1;i<=n;i++)
cin>>x[i];
for(int i=1;i<=n;i++)
{
if(x[i]=='C') C++;
if(x[i]=='O') CO+=C;
if(x[i]=='W') COW+=CO;
}
cout<<COW<<endl;
return 0;
}