#30230: 請問若data一個個input可行嗎,


tinakga920029@gmail.com (云婷)

學校 : 金門縣金城國中
編號 : 190665
來源 : [218.173.75.121]
最後登入時間 :
2022-06-03 12:21:10
a159. 11743 - Credit Check -- UVa11743 | From: [101.136.201.94] | 發表日期 : 2022-05-09 14:01

我自己測了那兩組資料都是對的,但丟上去就錯了,

以下是我的思考

//思考作法:

1.採取一個int一個int讀入

2.迴圈:先用一個陣列arr1將input的16個data存入後

3.if/esle:判斷位子位於偶數的data需要乘上2後再用另一個陣列arr2分別將乘上的資料一一讀入

4.判斷位子位於奇數的data需要將資料一一相加到變數num2

5.迴圈:將陣列arr2的資料相加到num1

6.if/else:判斷num1是否與num1相加後個位數為0,並分別列印出invalid/ valid

 

 

#include <stdio.h>
int main(){
int set,i,j,temp;
 
scanf("%d",&set);
int arr[16*set];
for(j=1;j<=set;j++){
int sum1=0;
int sum2=0;
int arr2[16]={0};
for(i=0;i<=15;i++){
scanf("%d",&arr[i]);
if(i%2==0){
temp=arr[i]*2;
if(temp%10!=temp){
arr2[i]=temp/10;
arr2[i+1]=temp%10;
}
else{
arr2[i]=temp;
}

}
if(i%2==1){
sum2+=arr[i];
}
}
for(i=0;i<=15;i++){
sum1+=arr2[i];
}
if((sum1+sum2)%10==0){
printf("Vaild\n");
}
else{
printf("Invalid\n");
}
 
//for(i=0;i<=15;i++){ //測試用資料
// printf("%d",arr[i]);}
// printf("\n");
// printf("%d\n",sum1);
// printf("%d\n",sum2);
//printf("\n");
// for(i=0;i<=15;i++){
// printf("%d",arr2[i]);}


}
return 0;
}
 
#30236: Re: 請問若data一個個input可行嗎,


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [101.136.203.77]
最後登入時間 :
2024-04-07 15:34:14
a159. 11743 - Credit Check -- UVa11743 | From: [110.28.192.189] | 發表日期 : 2022-05-09 20:03

1.
int arr[16*set];
2.
scanf("%d",&arr[i]);
3.
printf("Vaild\n");
 
  1. 測資很大,會放不下
  2. 你這樣會變成一次讀取四個數字,可以用getchar()一次讀取一個字元,或是設定寬度用%1d也可以,但是我這樣寫壓線1.9s AC
  3. Valid

 

 
#30237: Re: 請問若data一個個input可行嗎,


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [101.136.203.77]
最後登入時間 :
2024-04-07 15:34:14
a159. 11743 - Credit Check -- UVa11743 | From: [110.28.192.189] | 發表日期 : 2022-05-09 20:09

1.
int arr[16*set];
2.
scanf("%d",&arr[i]);
3.
printf("Vaild\n");
 
  1. 測資很大,會放不下
  2. 你這樣會變成一次讀取四個數字,可以用getchar()一次讀取一個字元,或是設定寬度用%1d也可以,但是我這樣寫壓線1.9s AC
  3. Valid

 


另外我覺得你寫得太複雜了,我的寫法是奇數項直接加,偶數項如果小於5直接乘2,否則乘2減9

 
ZeroJudge Forum