मैं प्रतिस्पर्धी प्रोग्रामिंग के लिए नया हूं और मैंने हैकर रैंक पर एक समस्या की है। प्रश्न बयान इस प्रकार है:हैकर रैंक: प्रोजेक्ट यूलर # 1
"हम 10 कि 3 या 5 के गुणज हैं नीचे सभी प्राकृतिक संख्याओं को सूचीबद्ध है, तो हम मिल 3, 5, 6 और 9 इन गुणकों की राशि 23.
हैएन
इनपुट स्वरूप पहली पंक्ति टी कि परीक्षण के मामलों की संख्या को दर्शाता है शामिल नीचे 3 या 5 के सभी गुणकों की राशि का पता लगाएं। इस टी लाइनों द्वारा पीछा किया जाता, एन
प्रत्येक एक पूर्णांक युक्त,आउटपुट प्रारूप प्रत्येक परीक्षण मामले के लिए, एक पूर्णांक मुद्रित करें जो सभी गुणकों के योग को दर्शाता है एन के नीचे 3 या 5 का। "
प्रतिबन्ध
1≤T≤10^5
1≤N≤10^9
मैं निम्नलिखित कोड जो सफलतापूर्वक 3 परीक्षण मामलों संतुष्ट करता है और शेष दो में विफल रहता है लिखा है।
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int func(int p,int n)
{
int j;
n=n-1;
j=n/p;
return (p*j*(j+1))/2;
}
int main()
{
unsigned long int n;
int t,j,count;
scanf("%d",&t);
if(t>=1 && t<=100000){
for(j=0;j<t;j++)
{
scanf("%lu",&n);
if(n>=1 && n<=1000000000)
{
count=func(3,n)+func(5,n)-func(15,n);
printf("%d\n",count);
}
}}
return 0;
}
मेरे कोड में क्या गलती है। यह स्वीकार क्यों नहीं हो रहा है?
यह प्रतिस्पर्धात्मकता के बारे में नहीं है ... यह एक पहेली के लिए जवाब खोजने के बारे में है। यह उपयोगी नहीं हो सकता है लेकिन समस्या को हल करने से बहुत संतुष्टि मिलती है। तो यदि आप वास्तव में गलती खोजने में मेरी मदद कर सकते हैं, तो यह वास्तव में सहायक होगा। –
क्या आप func() के पीछे एल्गोरिदम समझा सकते हैं? – jarmod
@jarmod: यह सभी प्राकृतिक संख्याओं के योग का एक प्रकार है जो 'n'' n * (n + 1)/2' तक है, केवल चरण 'p' के साथ। –