当前位置: 代码迷 >> 综合 >> 杭电oj2089-2099————C语言
  详细解决方案

杭电oj2089-2099————C语言

热度:13   发布时间:2023-10-24 10:48:11.0

2089.不要62
杭电oj2089-2099————C语言

#include<stdio.h>
int s[10000001];//违规数
void judge() {
    int t=0;for(int l=0; l<1000000; l++) {
    int now,last=0,k;k=l;while(k) {
    now=k%10;if(now==4||now==6&&last==2) {
    t++;break;}k=k/10;last=now;}s[l]=t;}
}
int main() {
    int n,m;judge();while(scanf("%d %d",&n,&m),n||m) {
    printf("%d\n",m-n+1-(s[m]-s[n-1]));}return 0;
}

2090.算菜价
杭电oj2089-2099————C语言

#include<stdio.h>int main()
{
    double a,b;char s[100];double sum = 0.0;while(scanf("%s", s)!=EOF){
    scanf("%lf%lf", &a, &b);sum += a*b;        }printf("%.1lf\n", sum);return 0;
}*/

2091.空心三角形
杭电oj2089-2099————C语言
和2032杨辉三角差不多
2052.Picture


#include <stdio.h>
void main()
{
    char a;int b;int i,j,k,m;int sign=1;while(scanf("%s",&a)!=EOF){
    if(a=='@') break;scanf("%d",&b);if(sign==0) printf("\n");//多个测试间隔一行for(i=0;i<b;i++)//b行{
    for(j=b-1-i;j>0;j--)    {
    printf(" ");//输出前面空格,规律还可以}printf("%c",a);//输出第一个aif(i!=0&&i!=b-1)//除了第一行和最后一行{
    for(k=0;k<(i-1)*2+1;k++){
    printf(" ");//输出有规律个数的空格}printf("%c",a);//有了if条件,第一行就不会有两个a}if(i==b-1)//最后一行{
    for(m=0;m<2*b-2;m++){
    printf("%c",a);}}printf("\n");//每行回车}sign = 0;}
}

2092整数解
杭电oj2089-2099————C语言

#include <stdio.h>
#include <math.h>
int main(){
    int n,m;while(scanf("%d%d",&n,&m),n,m){
    double x=sqrt(n*n-4*m);printf((int) x==x?"Yes\n":"No\n");}
}

2093
太难了

2094.产生冠军
杭电oj2089-2099————C语言


#include <stdio.h>
#include <stdlib.h>
#include <string.h>int main(){
    char num1[2010][100],num2[2010][100];int j,i,samep,count,n,butong,same;while(scanf("%d",&n) != EOF && n){
    getchar();for(i = 0;i < n * 2;i++)scanf("%s",&num2[i]);same = 0;for(i = 0;i < n * 2;i++){
    for(j = i+1;j < n * 2;j++){
    if(strcmp(num2[i],num2[j]) == 0){
    same++;break;}}}butong = n * 2 - same;same = 0;for(i = 1;i < n * 2;i+=2)for(j = i+2;j < n*2;j+=2){
    if(strcmp(num2[i],num2[j]) == 0){
    same++;break;}}count = n - same;if(butong - count == 1)printf("Yes\n");elseprintf("No\n");}
}

2095.find your present (2)
杭电oj2089-2099————C语言
利用数论知识:a^ b^a=b,答案与n-1个数异或就是可以找出最终答案

#include <stdio.h>
int main()
{
    int n;int temp;while(scanf("%d",&n),n){
    int ans,i;for(i=0,ans=0;i<n;i++){
    scanf("%d",&temp);ans=ans^temp;}printf("%d\n",ans);}return 0;
}

异或运算法则

  1. a ^ b = b ^ a
  2. a ^ b ^ c = a ^ (b ^ c) = (a ^ b) ^ c;
  3. d = a ^ b ^ c 则 a = d ^ b ^ c.
  4. a ^ b ^ a = b

2096.小明A+B
杭电oj2089-2099————C语言

#include <stdio.h>
int main(){
    int n;scanf("%d",&n);while(n--){
    int a,b;scanf("%d%d",&a,&b);if(a>=100) a=a%100;if(b>=100) b=b%100;int c=a+b;if(c>=100) c=c%100;printf("%d\n",c);}return 0;
}

2097.Sky数
杭电oj2089-2099————C语言

#include <stdio.h>
int main()
{
    int a;while(~scanf("%d",&a),a){
    if(	(a/1000+a/100%10+a/10%10+a%10)==(a/4096+a/256%16+a/16%16+a%16)&&(a/1000+a/100%10+a/10%10+a%10)==(a/1728+a/144%12+a/12%12+a%12))printf("%d is a Sky Number.\n",a);elseprintf("%d is not a Sky Number.\n",a);}return 0;
}

2098.分拆素数和
杭电oj2089-2099————C语言

#include <stdio.h>
#include <math.h>
int isPrime(int n)//判断素数函数。
{
    int i;for(i = 2; i <= (int)sqrt(n); i ++)//从2到算数平方根遍历。if(n%i == 0) return 0;//存在约数,非素数,返回0.return 1;//是素数,返回1.
}
int main()
{
    int i,a,j;while(~scanf("%d",&a),a){
    int c[5000]={
    0};int k=0,count=0;for(i = 2; i <= a; i ++)if(isPrime(i)==1)//是素数。{
    c[k]=i;k++;}for(i=0;i<k;i++)for(j=1;j<k;j++)if(c[i]+c[j]==a) {
    // printf("%d %d\n",c[i],c[j]);count++;}printf("%d\n",count/2);/* for(j=0;j<k;j++)if(j!=k-1)printf("%d ", c[j]);printf("%d\n",c[k-1]);*/}return 0;
}

判断是否素数代码

#include <stdio.h>
#include <math.h>
int isPrime(int n)//判断素数函数。
{
    int i;for(i = 2; i <= (int)sqrt(n); i ++)//从2到算数平方根遍历。if(n%i == 0) return 0;//存在约数,非素数,返回0.return 1;//是素数,返回1.
}
int main()
{
    int i,a;while(~scanf("%d",&a)){
    if(a==1)printf("%d不是素数\n",a);else if(isPrime(a)==1)printf("%d是素数\n",a);elseprintf("%d不是素数\n",a);}return 0;
}

输出素数代码

#include <stdio.h>
#include <math.h>
int isPrime(int n)//判断素数函数。
{
    int i;for(i = 2; i <= (int)sqrt(n); i ++)//从2到算数平方根遍历。if(n%i == 0) return 0;//存在约数,非素数,返回0.return 1;//是素数,返回1.
}
int main()
{
    int i;for(i = 2; i <= 100; i ++)if(isPrime(i)==1)//是素数。printf("%d ", i);return 0;
}

2099.整数的尾数

杭电oj2089-2099————C语言

#include <stdio.h>
int main(){
    int a,b;while(~scanf("%d%d",&a,&b),a+b){
    int c=a*100;int d[100],k=0,i;for( i=c;i<c+100;i++)if(i%b==0){
    d[k]=i%100;k++;}for( i=0;i<k;i++)if(i!=k-1){
    if(d[i]>=0&&d[i]<10){
    printf("0");printf("%d ",d[i]);}elseprintf("%d ",d[i]);}if(d[k-1]>=0&&d[k-1]<10){
    printf("0%d\n",d[k-1]);    }elseprintf("%d\n",d[k-1]);}return 0;
}